查询时大小写的问题。

joejoe1991 2009-02-22 02:26:55
select count(*) from tb_adminuser  where username = 'ADMIN'


数据库里username列的值为admin
可是为什么写成ADMIN,count(*)仍然是1?
谢谢各位!
...全文
135 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryantj 2009-02-22
  • 打赏
  • 举报
回复
受教育了,谢谢
-狙击手- 2009-02-22
  • 打赏
  • 举报
回复
联机帮助
ws_hgo 2009-02-22
  • 打赏
  • 举报
回复
create TABLE #T(username VARCHAR(10))
INSERT #T SELECT 'ADMIN'
INSERT #T SELECT 'admin'

select count(*) from #T where username='ADMIN'


-----------
2

(1 行受影响)
肥龙上天 2009-02-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 joejoe1991 的回复:]
我SQL就只学了简单的select insert之类的。
呃,麻烦各位牛人解释一下,
排序规则跟查数据有啥关系?
[/Quote]
在order by里面差别就大了,包括区分不分大小写,区分不区分重音等,不同的排序规则返回结果是不一样的!
joejoe1991 2009-02-22
  • 打赏
  • 举报
回复
我SQL就只学了简单的select insert之类的。
呃,麻烦各位牛人解释一下,
排序规则跟查数据有啥关系?
水族杰纶 2009-02-22
  • 打赏
  • 举报
回复
sql排序规则
如果要是区分大小写的话,就要改变数据库的排序规则。

1、查看系统中所支持的全部排序规则列表

SELECT * FROM ::fn_helpcollations()

2、查看当前系统的排序规则.

SELECT SERVERPROPERTY('Collation')

3、改变数据库的排序规则(做ALTER之前,要中断所有用户对此数据库的访问)

语法:
use master
go
ALTER DATABASE 数据库名 COLLATE 排序规则名
例子:
use master
go
ALTER DATABASE luwanzhufa COLLATE Chinese_PRC_CS_AS

* 我查过。Chinese_PRC_CS_AS这个是简体中文。而且区分大小写的排序规则。

192 Japanese_BIN 二进制顺序、用于 932(日文)字符集。
193 Japanese_CI_AS 字典顺序、不区分大小写、用于 932(日文)字符集。
200 Japanese_CS_AS 字典顺序、区分大小写、用于 932(日文)字符集。
198 Chinese_PRC_BIN 二进制顺序、用于 936(简体中文)字符集。
199 Chinese_PRC_CI_AS 字典顺序、不区分大小写、用于 936(简体中文)字符集。
203 Chinese_PRC_CS_AS 字典顺序、区分大小写、用于 936(简体中文)字符集。
水族杰纶 2009-02-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wufeng4552 的回复:]
SQL codeDECLARE @T TABLE (USERNAME VARCHAR(10))
INSERT @T SELECT 'ADMIN'
INSERT @T SELECT 'admin'
select count(*) from @t where username='admin' collate Chinese_PRC_CI_AS --区分
select count(*) from @t where username='admin' collate Chinese_PRC_CS_AS --不区分
/*
-----------
2


-----------
1

*/
[/Quote]
PS:写反了
水族杰纶 2009-02-22
  • 打赏
  • 举报
回复
DECLARE @T TABLE (USERNAME VARCHAR(10))
INSERT @T SELECT 'ADMIN'
INSERT @T SELECT 'admin'
select count(*) from @t where username='admin' collate Chinese_PRC_CI_AS --区分
select count(*) from @t where username='admin' collate Chinese_PRC_CS_AS --不区分
/*
-----------
2


-----------
1

*/
liangCK 2009-02-22
  • 打赏
  • 举报
回复
select count(*) from tb_adminuser  where username COLLATE CHINESE_PRC_CS_AS = 'ADMIN'
htl258_Tony 2009-02-22
  • 打赏
  • 举报
回复
select count(*) from tb_adminuser  where upper(username) = 'ADMIN'

子陌红尘 2009-02-22
  • 打赏
  • 举报
回复
在SQL Server 2000中,缺省的排序规则是不区分大小写的;如果你需要在某个或某些字段上实现区分大小写,那需要在创建表时指定另外的排序规则。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧