大家好,我a数据库中有一张表SoftWare的表,其中有一条SoftWareID(主键)为“S0000001”的记录,a数据库的排序规则设的是:Chinese_PRC_90_CS_AI 。  然后我用这条语句查询的时候  select * from software where SoftWareID='S0000001'的确能够提示表名错误(大小写敏感)。但是select * from software where SoftWareID='S0000001'和select * from software where SoftWareID='s0000001'却都能把记录查询出来。也就是说对字段值是不敏感的这是怎么回事?请问有什么方法可以让它对字段值也敏感。

解决方案 »

  1.   

    select * from software where SoftWareID='S0000001' and SoftWareID like '%[A-Z]%' COLLATE chinese_prc_binselect * from software where SoftWareID='S0000001' and SoftWareID like '%[a-z]%' COLLATE chinese_prc_bin
      

  2.   

    DECLARE @T TABLE (TEST VARCHAR(20) COLLATE Chinese_PRC_90_CS_AI )
    INSERT @T SELECT 'S0000001'
    INSERT @T SELECT 's0000001'
    SELECT * FROM @T WHERE TEST='S0000001'
    /*TEST
    --------------------
    S0000001(1 行受影响)*/
    SELECT * FROM @T WHERE TEST='s0000001'
    /*TEST
    --------------------
    s0000001(1 行受影响)*/
      

  3.   

    create table software(SoftWareID varchar(20))
    insert into software values('S0000001')
    insert into software values('s0000001')
    goselect * from software where SoftWareID='S0000001' and SoftWareID like '%[A-Z]%' COLLATE chinese_prc_bin
    /*
    SoftWareID           
    -------------------- 
    S0000001(所影响的行数为 1 行)
    */select * from software where SoftWareID='s0000001' and SoftWareID like '%[a-z]%' COLLATE chinese_prc_bin
    /*
    SoftWareID           
    -------------------- 
    s0000001(所影响的行数为 1 行)
    */--drop table software
      

  4.   

    DECLARE @T TABLE (TEST VARCHAR(20)) --COLLATE Chinese_PRC_90_CS_AI )
    INSERT @T SELECT 'S0000001'
    INSERT @T SELECT 's0000001'
    SELECT * FROM @T WHERE TEST='s0000001'
    /*TEST
    --------------------
    S0000001
    s0000001(2 行受影响)*/
    SELECT * FROM @T WHERE TEST='s0000001' COLLATE Chinese_PRC_90_CS_AI
    /*TEST
    --------------------
    s0000001(1 行受影响)*/
      

  5.   

    嗯,按照4楼的说法,我试了一下,是没问题,可以区分但是我纳闷的的是,为什么代码里还需要明确的指出呢?我通过SSMS界面在数据库a的属性里边已经设了使用Chinese_PRC_90_CS_AI排序规则,怎么就不起作用呢,两位能够指点一下??
      

  6.   

    而且,我看四楼在建表的时候  DECLARE @T TABLE (TEST VARCHAR(20)) --COLLATE Chinese_PRC_90_CS_AI )这样是不是已经就指定了表的排序规则了??代码里还需要再写吗?