id name
__________
1 name1
2 name2
3 _name3
,我想選擇所有的名字,即以「_」字符。
SELECT name FROM table1 WHERE name like '_%'
但是這個查詢返回表中的所有行。也許任何人都知道這個問題的一些解決方案(不使用ESCAPE關鍵字)?或者,有沒有機會在Oracle中設置默認轉義字符?
id name
__________
1 name1
2 name2
3 _name3
,我想選擇所有的名字,即以「_」字符。
SELECT name FROM table1 WHERE name like '_%'
但是這個查詢返回表中的所有行。也許任何人都知道這個問題的一些解決方案(不使用ESCAPE關鍵字)?或者,有沒有機會在Oracle中設置默認轉義字符?
我想選擇所有以'_'開頭的名字。
使用SUBSTR
。
SQL> WITH DATA AS(
2 SELECT 1 ID, 'name1' NAME FROM dual UNION ALL
3 SELECT 2, 'name2' FROM dual UNION ALL
4 SELECT 3 , '_name3' FROM dual
5 )
6 SELECT * FROM DATA
7 WHERE substr(NAME, 1, 1) = '_'
8/
ID NAME
---------- ------
3 _name3
SQL>
顯然,you cannot:
char1 [ NOT ] { LIKE | LIKEC | LIKE2 | LIKE4 } char2 [ ESCAPE esc_char ]
[...]
如果esc_char
沒有指定,那麼沒有默認轉義字符 。爲什麼不使用ESCAPE關鍵字
試試這個..
select * from table1 where regexp_like (name,'^_') ;
?設置默認(如果可能)可能會在其他地方產生不希望的結果。使用帶字符串操作的工作環境可能會導致性能下降。另外它取決於你想要達到的目標,也許它更好地清理一次數據,並且使用約束來拒絕在數據中使用'_'。 – evilive