Почему моя конкатенация не позволяет мне добавлять% в конец? - PullRequest
0 голосов
/ 05 мая 2020
SELECT COUNT(*) INTO E_COUNT FROM EXAMPLE_TABLE WHERE UPPER(EMPLOYEE_USERNAME) LIKE CONCAT(UPPER("example"), "%");

Я получаю следующую ошибку:

ORA-00904: "%": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 1 Column: 111

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

Когда вы используете двойные кавычки, это интерпретируется как идентификатор.

with t ("ab", "%") as (
select 1, 2 from dual
)
select concat("ab", "%") from t;

CO
--
12
0 голосов
/ 05 мая 2020

Должно быть так:

SELECT COUNT(*) INTO E_COUNT FROM EXAMPLE_TABLE WHERE UPPER(EMPLOYEE_USERNAME) LIKE UPPER('example%');

или, если вы сравниваете переменную привязки, то вот так:

SELECT COUNT(*) INTO E_COUNT FROM EXAMPLE_TABLE WHERE UPPER(EMPLOYEE_USERNAME) LIKE UPPER(:V_EXAMPLE)||'%';

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

...