2015-10-15 2 views
0

Я пытаюсь получить все имя, в котором есть специальный символ и числа. Я хочу знать, есть ли лучший способ написать этот запрос. БлагодаряЗапрос для регулярного выражения - oracle DB

select Name from TABLE1 
WHERE NAME LIKE '%-%' 
    OR NAME LIKE '%$%' 
    OR NAME LIKE '%4%' etc 
+1

mysql ИЛИ oracle не оба – Mihai

+0

Как уже говорилось, используется тег dbms, так как ответ будет специфичным для продукта! – jarlh

+0

это mysql? или оракул? – Alex

ответ

0

Попробуйте это:

SELECT Name FROM Test WHERE REGEXP_LIKE(Name,'(-|$|4)'); 

В | (OR или Alternation) оператор возвращает выражение true, если значение содержит «-» ИЛИ «$» ИЛИ «4» и т. Д.

+0

Возможно, вы имели в виду 'regexp_like'? –

+0

Вы можете сделать SELECT Name FROM TABLE1 WHERE NAME REGEXP_LIKE (NAME, '(- | $ | 4)') –

+0

Список символов в шаблоне соответствия не будет работать с оператором 'like'. Ты это пробовал? –

0

Используйте квадратные скобки для определения класса символов. Также полное регулярное выражение для привязки шаблона к началу строки, любое количество символов перед символьным классом, состоящим из тире или знака 4 или доллара, а затем любое количество символов, привязанных к концу строки:

SQL> with tbl(name) as (
    2 select 'efs' from dual 
    3 union 
    4 select 'abc-' from dual 
    5 union 
    6 select 'a4bd' from dual 
    7 union 
    8 select 'gh$dll' from dual 
    9 union 
10 select 'xy5zzy' from dual 
11 ) 
12 select name from tbl 
13 where regexp_like(name, '^.*[-|$|4].*$'); 

NAME 
------ 
a4bd 
abc- 
gh$dll 

SQL> 
Смежные вопросы