我想獲取所有名稱中包含特殊字符和數字的名稱。我想知道是否有更好的寫這個查詢的方法。由於查詢正則表達式 - oracle數據庫
select Name from TABLE1
WHERE NAME LIKE '%-%'
OR NAME LIKE '%$%'
OR NAME LIKE '%4%' etc
我想獲取所有名稱中包含特殊字符和數字的名稱。我想知道是否有更好的寫這個查詢的方法。由於查詢正則表達式 - oracle數據庫
select Name from TABLE1
WHERE NAME LIKE '%-%'
OR NAME LIKE '%$%'
OR NAME LIKE '%4%' etc
試試這個:
SELECT Name FROM Test WHERE REGEXP_LIKE(Name,'(-|$|4)');
的| (OR或Alternation)運算符允許表達式在值包含' - '或'$'或'4'時返回true。
您的意思是,'regexp_like'? –
您可以做SELECT名稱FROM TABLE1姓名REGEXP_LIKE(NAME,'( - | $ | 4)') –
您的匹配模式中的字符列表不會與'like'運算符一起使用。你試過了嗎? –
使用方括號來定義字符類。此外,還有一個完整的正則表達式,用於將模式錨定到字符串的開頭,字符類之前的任意數量的任何字符,包括短劃線或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>
mysql OR oracle not both – Mihai
如前所述,使用了標籤dbms,因爲答案將是產品特定的! – jarlh
是mysql嗎?還是oracle? – Alex