【发布时间】:2019-11-14 01:41:02
【问题描述】:
将所有记录与包含子字符串Type [B] 的nvarchar 列匹配
例如:Owner [C] Type [B] Subtype [X]
以下作品:LIKE '%Type [[]B[]]%'
但它的语法相当混乱。
有没有更好的选择?
【问题讨论】:
标签: sql-server tsql sql-server-2012 escaping sql-like
将所有记录与包含子字符串Type [B] 的nvarchar 列匹配
例如:Owner [C] Type [B] Subtype [X]
以下作品:LIKE '%Type [[]B[]]%'
但它的语法相当混乱。
有没有更好的选择?
【问题讨论】:
标签: sql-server tsql sql-server-2012 escaping sql-like
您可以使用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 '.'
【讨论】:
[,而不需要转义闭方括号] ?