REGEXP_LIKE QUERY IN ORACLE DB

Мне нужно в настоящее время соответствовать 00000012345 а также 12345 в моем 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 as oracle db допускает не более 2 аргументов. (другая проблема)

1 ответ

Вы можете объединить параметр:

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

Либо добавьте часть регулярного выражения к введенному пользователем значению (в коде приложения), прежде чем передавать его в запрос.

Другие вопросы по тегам