我想搜索一個列並獲取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