mssql中标点符号大小写如何区分?select * from tbl where
 title='周永康:深化中美在保护知识产权等领域的务实合作'
select * from tbl where
 title='周永康:深化中美在保护知识产权等领域的务实合作'
-----------
在SQL里搜索,两个语句执行后得到的是同一条记录,但是语句中其中冒号一个是英文的,一个是中文的

解决方案 »

  1.   

    SELECT ascii(':')
    --58SELECT ascii(':')
    --163
      

  2.   

    将title字段的排序方式设置为区分宽度的排序方式,例如下面的排序方式:select * from tbl where title = '周永康:深化中美在保护知识产权等领域的务实合作' collate Chinese_PRC_CS_AS_KS_WS
      

  3.   

    declare @s1 nvarchar(200),@s2 nvarchar(200)
    select @s1=N'周永康:深化中美在保护知识产权等领域的务实合作'
    select @s2=N'周永康:深化中美在保护知识产权等领域的务实合作'
    select 1
    where convert(varbinary(max),@s1)=convert(varbinary(max),@s2)select 1
    where @s1=@s2 collate Chinese_PRC_BIN
    /*-----------(0 個資料列受到影響)
    -----------(0 個資料列受到影響)
    */
      

  4.   

    select * from ::fn_helpcollations() where name like 'Chinese_PRC_%' order by name_BIN    二进制排序
    _CI(CS) 是否区分大小写,CI 不区分,CS 区分
    _AI(AS) 是否区分重音,AI 不区分,AS 区分
    _KI(KS) 是否区分假名类型,KI 不区分,KS 区分
    _WI(WS) 是否区分宽度,WI 不区分,WS 区分
      

  5.   

    为什么我的看不出来呢?
    SELECT ASCII(':')EN
    SELECT ASCII(':')CHEN
    -----------
    58(1 row(s) affected)CH
    -----------
    58(1 row(s) affected)
      

  6.   

    感谢大家的热心帮助,加上 collate就解决了!谢谢大家
      

  7.   

    玄机在这里:
    select cast(N',' as varbinary(10))EN,CAST(N',' aS varbinary(10))CH
    select cast(',' as varbinary(10))EN,CAST(',' aS varbinary(10))CHEN                     CH
    ---------------------- ----------------------
    0x2C00                 0x0CFF(1 row(s) affected)EN                     CH
    ---------------------- ----------------------
    0x2C                   0x2C(1 row(s) affected)