select PATINDEX('%[^-,0-9]%','1-6③') 的返回只为什是 0 呢?字符 ③ 并不在 0 到 9 之间呀?
select PATINDEX('%[^-,0-9]%','1-6③')select PATINDEX('%[^-,0-9]%','1-6aa')/*
----------- 
          0 (所影响的行数为 1 行)            
----------- 
          4 
*/
我的目的,是将  ③ 这样的字符处理掉,但是竟然检测不到,我真是晕了。

解决方案 »

  1.   

    这是字符串比较呀?
    if ('3'='③')
    select 1
    else
    select 0
      

  2.   

    select PATINDEX('%[^-,0-9]%','1-6③' collate Chinese_PRC_BIN) -- 4
      

  3.   

    帮助文档:返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。有关详细信息,请参阅搜索条件中的模式匹配。 Transact-SQL 语法约定语法
     
    PATINDEX ( '%pattern%' , expression )
     
    LZ 是否理解有误?哈哈
      

  4.   

    本帖最后由 roy_88 于 2011-02-10 16:31:35 编辑
      

  5.   

    樓主的字段類型應該是unicode字符類型時才會出現
      

  6.   


    SELECT PATINDEX('%[^-,0-9]%','1-6③' COLLATE Chinese_PRC_BIN)