【问题标题】:t-sql LIKE and special characterst-sql LIKE 和特殊字符
【发布时间】:2009-12-09 18:22:39
【问题描述】:

“[” 不归类为 unicode 字符 http://en.wikipedia.org/wiki/List_of_Unicode_characters(我的猜测)为什么这不起作用:

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v like  '[x]825' 

【问题讨论】:

    标签: tsql unicode sql-like


    【解决方案1】:

    [] 定义模式匹配的字符范围。它在 LIKE 语句中具有特殊含义。 Here's the documentation for it.

    如果您要明确查找这些字符,则需要将它们转义,如下所示:

    declare @v nvarchar(255)
    set @v =  '[x]825' 
    select 1 
    where  @v LIKE '![x]825' 
           ESCAPE '!'
    

    【讨论】:

    • 他刚刚做到了!是否有一个 sql 设置来阻止客户输入这个?塔
    【解决方案2】:

    [x] 对 SQL server 有特定的含义。括号用于非常基本的正则表达式。所以您要搜索的是第一个字符包含字母 X 的位置,当然这不是变量中的第一个字符。

    除非您打算使用通配符,否则最好不要使用 like,并且将通配符作为第一个字符是一种不好的做法,因为它会使查询使用表扫描而不是索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多