我的数据库是SQLServer2000.我用以下语句去查询:select l.*,c.name as name,d.dic as dic from hzlk_logo as l,CUST as c,hzlk_dic as d where l.BelCus=c.CUS_NO and l.BelSen=d.SubType and l.LogoCode like '%%' and l.LogoName like '%a%' and l.LogoSpc like '%%' order by l.LogoName    结果只查到带有a的记录。表里l.LogoName 这个字段,有包含大写A,也有包含小写a的记录,听别人说sqlserver是不分大小写的,但我查的时候却分了大小写,请问到底哪里出了问题?

解决方案 »

  1.   

    用sp_datatype_info进行对数据敏感的设置,
    0不敏感,1敏感
      

  2.   

    alter database 库名 collate Chinese_PRC_CS_AS
      

  3.   

    Jane_640老师,能讲详细些吗?
    xeqtr1982(ShaKa) 老师,照您的办法,会出现很多如下提示:
    服务器: 消息 5075,级别 16,状态 1,行 1
    列 'FN_BOX_TF_POS.OS_ID' 依赖于 数据库排序规则。
    服务器: 消息 5075,级别 16,状态 1,行 1
    列 'FN_BOX_TF_POS.OS_NO' 依赖于 数据库排序规则。
    服务器: 消息 5075,级别 16,状态 1,行 1
      

  4.   

    查的时候却分了大小写,请问到底哪里出了问题?
    --------------------
    你安装时指定了数据库的字符区分大小写,
    默认情况下是不区分大小写的!你可通过SQL语句重新指定数据库的排序方式!
    如:
    alter database 库名 collate Chinese_PRC_CI_AS  
    --这个是不区分大小写,不区分重音的比较
      

  5.   

    刚才没看清问题,不好意思,我写的那条语句是让SQL区分大小写的。
      

  6.   

    我希望查询时不区分大小写,但是,在安装、新建数据库时,都是默认的情况下,现在查询区分了大小写,所以,我想知道怎么让数据不区分大小写,试了用
    alter database 库名 collate Chinese_PRC_CI_AS  
    这一句在查询分析器上跑,但还是报
    服务器: 消息 5075,级别 16,状态 1,行 1
    列 'FN_BOX_TF_POS.OS_ID' 依赖于 数据库排序规则。
    服务器: 消息 5075,级别 16,状态 1,行 1
    列 'FN_BOX_TF_POS.OS_NO' 依赖于 数据库排序规则。    这样的错误,
      

  7.   

    如果你的l.LogoName 字段是varchar类型,在查询分析器中运行
    sp_datatype_info 12=0
    就可将其设为大小写不敏感。
    12为varchar类型对应的data_type值。
    在查询分析器中运行
      sp_datatype_info 
    可看到各种数据类型对应的data_type值。
      

  8.   

    Jane_640老师,我在查询分析器上跑了这句:sp_datatype_info 12=0
        
    但提示:
    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: '=' 附近有语法错误。
      

  9.   

    不好意思。以前在sql server 6.5这么改过。
    实在没有别的办法的话,直接对master库的用户表修改。将1改成0。
    master库中spt_datatype_info用户表的CASE_SENSITIVE字段中的值:
    0不区分大小写,1区分大小写
      

  10.   

    我master库中spt_datatype_info用户表的CASE_SENSITIVE字段中的值全都是0哦。怎么办?
      

  11.   

    谢谢大家,为了解决这个问题,我重装了SQLServer2000,并且安装时选择自定义安装,把排序规则也设成不区分大小写了。可是问题依旧,真希望有高手能快点告诉我怎么解决。在此先谢谢了!!!!
      

  12.   

    谢谢大家,为了解决这个问题,我重装了SQLServer2000,并且安装时选择自定义安装,把排序规则也设成不区分大小写了。可是问题依旧,真希望有高手能快点告诉我怎么解决。在此先谢谢了!!!!===========>关于排序问题,你改变了数据库排序只是对以后在此数据库新建的表起作用,以前建的表是不会变动的,只有手工改排序或删了重建此表.
      

  13.   

    我是重装了sqlserver后,再新建个数据库,然后把以前的数据库恢复回去,这样不行的吗?一定要一个一个表重建吗?
      

  14.   

    你在表结构定义中,l.LogoName字段用了“排序规则:Chinese_PRC_CS_AI”了吧!!!!
    用下面语句查询试试:
    select l.*,c.name as name,d.dic as dic 
      from hzlk_logo as l,CUST as c,hzlk_dic as d 
     where l.BelCus=c.CUS_NO 
       and l.BelSen=d.SubType 
       and l.LogoCode like '%%' 
       and l.LogoName like '%a%' COLLATE Chinese_PRC_CI_AI
       and l.LogoSpc like '%%' 
     order by l.LogoName
      

  15.   

    那个字段里的结构定义排序规则是默认的,而且我在新建数据库时也已经设成Chinese_PRC_CI_AI了,照您这个方法真的可以不分大小写哦。谢谢。看来我只能改语句了。真的太谢谢了。
      

  16.   

    select l.*,c.name as name,d.dic as dic from hzlk_logo as l,CUST as c,hzlk_dic as d where l.BelCus=c.CUS_NO and l.BelSen=d.SubType and l.LogoCode like '%%' and UPPER(l.LogoName) like '%a%' and l.LogoSpc like '%%' order by l.LogoName
      

  17.   

    不好意思,把upper 换为 Lower
      

  18.   

    我认为cdj_58的方法也可以,LZ试过吗?