Oracle SQL Regex - передать имя переменной в запросе Regex - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу использовать переменную в моем запросе Oracle SQL, которая использует регулярное выражение для фильтрации.Исходный запрос работает нормально, когда я жестко кодирую нужную строку ("TKelly") в запросе SQL:

SELECT Custom_Unique_Name from USERS
WHERE REGEXP_LIKE (Custom_Unique_Name, '^TKelly[^A-Za-z][0-9]*') 

Вывод:

CUSTOM_UNIQUE_NAME
------------------
TKelly1
TKelly3
TKelly2

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

variable vname varchar2(20)
exec :vname := 'TKelly';

PL/SQL procedure successfully completed.

SELECT Custom_Unique_Name from USERS
WHERE REGEXP_LIKE (Custom_Unique_Name, '^'|| :vname || [^A-Za-z][0-9]'*');

Вывод:

ORA-00936: missing expression
00936. 00000 -  "missing expression"

1 Ответ

0 голосов
/ 16 ноября 2018

Вам не хватает одинарных кавычек для остальной части регулярного выражения:

WHERE REGEXP_LIKE(Custom_Unique_Name,
                  '^'|| :vname || '[^A-Za-z][0-9]*'
                 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...