DB2中的句柄转义序列字符
我想搜索一列并获取value包含\的值 我尝试了DB2中的句柄转义序列字符,db2,Db2,我想搜索一列并获取value包含\的值 我尝试了从“Values”中选择*,其中的“ValueName”类似于“\”。但不返回任何值 还尝试了如“\”和如“\”%等,但没有结果 请参阅上的DB2文档,特别是关于转义表达式的部分 你想要的是 select * from Values where ValueName like '\\%' escape '\' 要给出用法示例,请执行以下操作: create table backslash_escape_test ( backslash_escape
从“Values”中选择*,其中的“ValueName”类似于“\”
。但不返回任何值
还尝试了
如“\”
和如“\”%
等,但没有结果 请参阅上的DB2文档,特别是关于转义表达式的部分
你想要的是
select * from Values where ValueName like '\\%' escape '\'
要给出用法示例,请执行以下操作:
create table backslash_escape_test
(
backslash_escape_test_column varchar(20)
);
insert into backslash_escape_test(backslash_escape_test_column)
values ('foo\');
insert into backslash_escape_test(backslash_escape_test_column)
values ('no slashes here');
insert into backslash_escape_test(backslash_escape_test_column)
values ('foo\bar');
insert into backslash_escape_test(backslash_escape_test_column)
values ('\bar');
select count(*) from backslash_escape_test where
backslash_escape_test_column like '%\\%' escape '\';
返回3(所有3行中都有\)
返回1(第\bar行)
“值”是一个不太好的名称,因为它可能与“值”关键字混淆。不要逃避它。您只需要在其周围使用通配符,如下所示:
select count(*)
from escape_test
where test_column like '%\%'
但是,假设你真的需要逃过刀口。这里有一个更简单、更直截了当的答案: 转义表达式允许您指定要转义的任何字符。那么,为什么要使用你正在寻找的角色,从而要求你逃避它呢?请改用任何其他字符。我将使用加号作为示例,但它可以是反斜杠、磅号、问号、除要查找的字符或通配符(%or)之外的任何字符 现在,您不必在类似的模式中添加任何内容 让自己坚持@Michael证明的同样的证明标准-- 它为每个方法返回相同数量的行:
TRIAL RESULT
----- ------
test1 3
test2 3
test3 3
不起作用。我尝试了“\\%”和“前缀\\%”。都返回了没有值的值。抱歉,忘记包含“转义”部分。更新了我的答案。
select count(*)
from escape_test
where test_column like '%\%'
select count(*)
from escape_test
where test_column like '%\%' escape '+';
create table escape_test
( test_column varchar(20) );
insert into escape_test
(test_column)
values ('foo\'),
('no slashes here'),
('foo\bar'),
('\bar');
select 'test1' trial, count(*) result
from escape_test
where test_column like '%\%'
UNION
select 'test2', count(*)
from escape_test
where test_column like '%\\%' escape '\'
UNION
select 'test3', count(*)
from escape_test
where test_column like '%\%' escape '+'
;
TRIAL RESULT
----- ------
test1 3
test2 3
test3 3