我有桌子
id name
__________
1 name1
2 name2
3 _name3
我要选择所有以' _'开头的名字。字符。
SELECT name FROM table1 WHERE name like '_%'
但是此查询返回表中的所有行。也许有人知道这个问题的一些解决方案(不使用ESCAPE关键字)?或者,是否有机会在Oracle中设置默认转义字符?
答案 0 :(得分:3)
显然,you cannot:
char1 [ NOT ] { LIKE | LIKEC | LIKE2 | LIKE4 } char2 [ ESCAPE esc_char ]
[...]
如果未指定esc_char
,则没有默认转义 字符强>
答案 1 :(得分:1)
我想选择以' _'开头的所有名字。字符。
使用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>
答案 2 :(得分:1)
试试这个..
select * from table1 where regexp_like (name,'^_') ;