DB2中的句柄转义序列字符

DB2中的句柄转义序列字符,db2,Db2,我想搜索一列并获取value包含\的值 我尝试了从“Values”中选择*,其中的“ValueName”类似于“\”。但不返回任何值 还尝试了如“\”和如“\”%等,但没有结果 请参阅上的DB2文档,特别是关于转义表达式的部分 你想要的是 select * from Values where ValueName like '\\%' escape '\' 要给出用法示例,请执行以下操作: create table backslash_escape_test ( backslash_escape

我想搜索一列并获取value包含\的值

我尝试了
从“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