在Oracle DB中进行REGEXP_LIKE查询

时间:2018-11-14 09:51:50

标签: regexp-like

我目前需要在我的00000012345搜索查询中匹配12345DB。 我目前正在使用以下查询:

SELECT * 
FROM BPP.CHECK_REGISTER 
WHERE CHECK_NO like CONCAT('%',:checkNum)

用于搜索,但是在这里%可以表示0以外的任何字符,因此我将查询替换为以下内容:

SELECT * 
FROM BPP.CHECK_REGISTER 
WHERE REGEXP_LIKE (CHECK_NO,'^(0*12345)$')

但是在此查询中,我不想提及12345,而是将其作为用户输入的参数(例如第一个查询:checkNum

)提及

我如何用用户输入REGEXP_LIKE改写仅包含2个参数的:checkNum条件,因为oracle db最多允许2个参数。 (另一个问题)

1 个答案:

答案 0 :(得分:1)

您可以串联参数:

SELECT * 
FROM BPP.CHECK_REGISTER 
WHERE REGEXP_LIKE (CHECK_NO,'^(0*'||:checkNum||')$');

或者在将正则表达式部分传递给查询之前,将其添加到用户输入的值(在您的应用程序代码中)。