如何在Oracle中定义默认转义字符?
我有一张桌子如何在Oracle中定义默认转义字符?,oracle,escaping,Oracle,Escaping,我有一张桌子 id name __________ 1 name1 2 name2 3 _name3 我想选择所有的名字,都以“u”字符开头 SELECT name FROM table1 WHERE name like '_%' 但此查询返回表中的所有行。也许有人知道这个问题的一些解决方案(不使用ESCAPE关键字)?或者,是否有机会在Oracle中设置默认转义字符 我想选择所有名称,以“u”字符开头 SELECT name FROM table1 WHERE name li
id name
__________
1 name1
2 name2
3 _name3
我想选择所有的名字,都以“u”字符开头
SELECT name FROM table1 WHERE name like '_%'
但此查询返回表中的所有行。也许有人知道这个问题的一些解决方案(不使用ESCAPE关键字)?或者,是否有机会在Oracle中设置默认转义字符
我想选择所有名称,以“u”字符开头
SELECT name FROM table1 WHERE name like '_%'
使用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>
我想选择所有名称,以“u”字符开头
SELECT name FROM table1 WHERE name like '_%'
使用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>
显然,:
[…]如果未指定
esc_char
,则没有默认转义
字符
显然,:
[…]如果未指定
esc_char
,则没有默认转义
字符
试试这个
select * from table1 where regexp_like (name,'^_') ;
试试这个
select * from table1 where regexp_like (name,'^_') ;
为什么不使用ESCAPE关键字呢?设置默认值(如果可能)可能会在其他位置产生不需要的结果。将work Arounds与字符串操作一起使用可能会导致性能不佳。另外,这取决于您想要实现的目标,也许最好清理一次数据,并使用约束拒绝在数据中使用“u”。为什么不使用ESCAPE关键字?设置默认值(如果可能)可能会在其他位置产生不需要的结果。将work Arounds与字符串操作一起使用可能会导致性能不佳。另外,这取决于您想要实现什么,也许最好清理一次数据,并使用约束拒绝在数据中使用“u”。