为什么我的sqlserver区分大小写?(急...)
我的数据库是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是不分大小写的,但我查的时候却分了大小写,请问到底哪里出了问题?
问题点数:50、回复次数:29Top
1 楼Jane_64()回复于 2006-03-09 15:03:33 得分 0
用sp_datatype_info进行对数据敏感的设置,
0不敏感,1敏感Top
2 楼xeqtr1982(Visual C# .NET)回复于 2006-03-09 15:05:10 得分 0
alter database 库名 collate Chinese_PRC_CS_ASTop
3 楼xeqtr1982(Visual C# .NET)回复于 2006-03-09 15:08:37 得分 0
看错问题了。呵呵Top
4 楼cjp2006(飞行棋)回复于 2006-03-09 15:10:14 得分 0
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
Top
5 楼lsqkeke(可可)回复于 2006-03-09 15:13:25 得分 0
查的时候却分了大小写,请问到底哪里出了问题?
--------------------
你安装时指定了数据库的字符区分大小写,
默认情况下是不区分大小写的!
你可通过SQL语句重新指定数据库的排序方式!
如:
alter database 库名 collate Chinese_PRC_CI_AS
--这个是不区分大小写,不区分重音的比较
Top
6 楼xeqtr1982(Visual C# .NET)回复于 2006-03-09 15:13:44 得分 0
刚才没看清问题,不好意思,我写的那条语句是让SQL区分大小写的。Top
7 楼cjp2006(飞行棋)回复于 2006-03-09 15:23:16 得分 0
我希望查询时不区分大小写,但是,在安装、新建数据库时,都是默认的情况下,现在查询区分了大小写,所以,我想知道怎么让数据不区分大小写,试了用
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' 依赖于 数据库排序规则。 这样的错误,Top
8 楼Jane_64()回复于 2006-03-09 15:32:18 得分 0
如果你的l.LogoName 字段是varchar类型,在查询分析器中运行
sp_datatype_info 12=0
就可将其设为大小写不敏感。
12为varchar类型对应的data_type值。
在查询分析器中运行
sp_datatype_info
可看到各种数据类型对应的data_type值。Top
9 楼cjp2006(飞行棋)回复于 2006-03-09 15:38:06 得分 0
Jane_640老师,我在查询分析器上跑了这句:sp_datatype_info 12=0
但提示:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '=' 附近有语法错误。
Top
10 楼cjp2006(飞行棋)回复于 2006-03-09 17:08:05 得分 0
还有没有人指点一下呢?急啊.....Top
11 楼Jane_64()回复于 2006-03-09 17:13:47 得分 0
不好意思。以前在sql server 6.5这么改过。
实在没有别的办法的话,直接对master库的用户表修改。将1改成0。
master库中spt_datatype_info用户表的CASE_SENSITIVE字段中的值:
0不区分大小写,1区分大小写Top
12 楼cjp2006(飞行棋)回复于 2006-03-09 17:25:40 得分 0
我master库中spt_datatype_info用户表的CASE_SENSITIVE字段中的值全都是0哦。怎么办?Top
13 楼cooleader320()回复于 2006-03-09 18:40:19 得分 0
把查询结果转换成2进制比较阿啊。
Top
14 楼cjp2006(飞行棋)回复于 2006-03-09 19:09:31 得分 0
学生我不够聪明,请说详细些,好吗?Top
15 楼cjp2006(飞行棋)回复于 2006-03-09 20:30:34 得分 0
拜托各位高手多多指教。我急需解决这个问题。Top
16 楼jysh321(蒙面天涯)回复于 2006-03-09 20:32:11 得分 0
关注
Top
17 楼zouqiang122(先天不足)回复于 2006-03-09 21:17:10 得分 0
支持一睛!!!Top
18 楼cjp2006(飞行棋)回复于 2006-03-10 08:39:31 得分 0
谢谢大家,为了解决这个问题,我重装了SQLServer2000,并且安装时选择自定义安装,把排序规则也设成不区分大小写了。可是问题依旧,真希望有高手能快点告诉我怎么解决。在此先谢谢了!!!!Top
19 楼wgsasd311(自强不息)回复于 2006-03-10 08:47:30 得分 0
谢谢大家,为了解决这个问题,我重装了SQLServer2000,并且安装时选择自定义安装,把排序规则也设成不区分大小写了。可是问题依旧,真希望有高手能快点告诉我怎么解决。在此先谢谢了!!!!===========>关于排序问题,你改变了数据库排序只是对以后在此数据库新建的表起作用,以前建的表是不会变动的,只有手工改排序或删了重建此表.Top
20 楼cjp2006(飞行棋)回复于 2006-03-10 08:58:14 得分 0
我是重装了sqlserver后,再新建个数据库,然后把以前的数据库恢复回去,这样不行的吗?一定要一个一个表重建吗?Top
21 楼WYZSC(007,重在参乎,说错问错勿怪。)回复于 2006-03-10 09:11:07 得分 0
关注Top
22 楼Jane_64()回复于 2006-03-10 09:19:44 得分 50
你在表结构定义中,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.LogoNameTop
23 楼cjp2006(飞行棋)回复于 2006-03-10 09:29:04 得分 0
那个字段里的结构定义排序规则是默认的,而且我在新建数据库时也已经设成Chinese_PRC_CI_AI了,照您这个方法真的可以不分大小写哦。谢谢。看来我只能改语句了。真的太谢谢了。Top
24 楼cjp2006(飞行棋)回复于 2006-03-10 09:35:40 得分 0
虽然这个问题没有找到根本原因,不过,还是可以很容易实现不分大小写。真心感谢Top
25 楼cdj_58(飘)回复于 2006-03-10 09:57:37 得分 0
使用like是区分大小写的,Top
26 楼cdj_58(飘)回复于 2006-03-10 10:01:35 得分 0
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.LogoNameTop
27 楼cdj_58(飘)回复于 2006-03-10 10:08:49 得分 0
不好意思,把upper 换为 LowerTop
28 楼lovecat_sc()回复于 2006-03-10 16:42:34 得分 0
我认为cdj_58的方法也可以,LZ试过吗?Top
29 楼bbbbcccc()回复于 2006-03-10 16:49:43 得分 0
http://valenhua.go3.icpcn.com/Top




