首页 > 解决方案 > ORACLE DB 中的 REGEXP_LIKE 查询

问题描述

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

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 个参数。(另一个问题)

标签: regexp-like

解决方案


您可以连接参数:

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

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


推荐阅读