我想搜索一个列并获取value containts \的值。我试过select * from "Values" where "ValueName" like '\'
。但是没有价值。在DB2中处理转义序列char
也试过like "\"
和like'\''%'
等,但没有结果。
我想搜索一个列并获取value containts \的值。我试过select * from "Values" where "ValueName" like '\'
。但是没有价值。在DB2中处理转义序列char
也试过like "\"
和like'\''%'
等,但没有结果。
请参阅LIKE predicate上的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行与\在其中)。
select count(*) from backslash_escape_test where
backslash_escape_test_column like '\\%' escape '\';
返回1(\栏行)。
select * from Values where ValueName like '%\\%'
值是一个不那么好的名字,因为它可能会混淆的价值观关键字
不要逃避它。你只需要围绕它通配符这样的:
select count(*)
from escape_test
where test_column like '%\%'
但是,假设你真的需要逃跑的斜线。这里有一个更简单,更直接的答案:
escape-expression允许你指定任何你想要转义的字符。那么为什么要使用你正在寻找的角色,因此要求你逃脱它呢?改用任何其他字符。我将使用加号作为示例,但它可能是反斜杠,磅符号,问号,除您正在查找的字符或其中一个通配符(%或_)之外的任何内容。
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
不工作。我尝试了'%\\%'和'Prefix \\%'。两者都返回没有值。 – Cannon
对不起,忘了包含它的“ESCAPE”部分。更新了我的答案。 –
非常感谢。这工作。 – Cannon