T-SQL LIKE 带转义字符
T-SQL LIKE with escaped characters
匹配具有包含子字符串 Type [B]
的 nvarchar
列的所有记录
例如:Owner [C] Type [B] Subtype [X]
以下作品:LIKE '%Type [[]B[]]%'
但它的语法相当混乱。
还有更好的选择吗?
您可以使用 ESCAPE 选项。
查询将是LIKE '%Type #[B]%' ESCAPE '#'
请使用示例数据查找工作查询:
DECLARE @TextTable TABLE (String NVARCHAR (500));
INSERT INTO @TextTable(String) SELECT ('Owner [C] Type [B] Subtype [X]');
INSERT INTO @TextTable(String) VALUES ('Owner [C] Type [B Subtype [X]');
INSERT INTO @TextTable(String) VALUES ('Owner [C] Type B Subtype [X]');
SELECT *
FROM @TextTable
WHERE String LIKE '%Type #[B]%' ESCAPE '#'
是的,您可以使用 ESCAPE
并定义您的自定义转义字符:
select *
from (select 'Owner [C] Type [B] Subtype [X]' as field) as t
where
t.field LIKE '%Type \[B]%' ESCAPE '\' --can be any char
--t.field LIKE '%Type .[B]%' ESCAPE '.'
匹配具有包含子字符串 Type [B]
nvarchar
列的所有记录
例如:Owner [C] Type [B] Subtype [X]
以下作品:LIKE '%Type [[]B[]]%'
但它的语法相当混乱。
还有更好的选择吗?
您可以使用 ESCAPE 选项。
查询将是LIKE '%Type #[B]%' ESCAPE '#'
请使用示例数据查找工作查询:
DECLARE @TextTable TABLE (String NVARCHAR (500));
INSERT INTO @TextTable(String) SELECT ('Owner [C] Type [B] Subtype [X]');
INSERT INTO @TextTable(String) VALUES ('Owner [C] Type [B Subtype [X]');
INSERT INTO @TextTable(String) VALUES ('Owner [C] Type B Subtype [X]');
SELECT *
FROM @TextTable
WHERE String LIKE '%Type #[B]%' ESCAPE '#'
是的,您可以使用 ESCAPE
并定义您的自定义转义字符:
select *
from (select 'Owner [C] Type [B] Subtype [X]' as field) as t
where
t.field LIKE '%Type \[B]%' ESCAPE '\' --can be any char
--t.field LIKE '%Type .[B]%' ESCAPE '.'