【问题标题】:T-SQL LIKE with escaped characters带有转义字符的 T-SQL LIKE
【发布时间】: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


    【解决方案1】:

    您可以使用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 '#'
    

    Working demo on db<>fiddle

    【讨论】:

    【解决方案2】:

    是的,您可以使用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 '.' 
    

    【讨论】:

    • 只需要转义开方括号[,而不需要转义闭方括号] ?
    猜你喜欢
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多