我要select * from table1 where name = 'ABC'
而不选出name为abc,或是Abc的数据,在查询时要怎么限制条件?
就是数据内容区分大小写
而不选出name为abc,或是Abc的数据,在查询时要怎么限制条件?
就是数据内容区分大小写
解决方案 »
- 为什么不推荐用 “用户名” 做主键
- 邹老大请进[急求一种编号生成的设计方案(300分)]
- 又是个查询问题,请大家帮忙看看...!
- 数据库吃了1.5G内存???
- 各位大侠 快来帮忙 我写了个自定义函数分支语句老提示有问题
- SQL分类汇总问题
- 不同的服务之间复制表时,为什么提示(仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'user' 中为标识列指定显式值)
- 怎么让某个char类型的字段不能有重复值呢?
- 频繁插入数据库 cpu高,送分?
- 交叉表问题。
- SQL server 操作时,值无法返回
- EXEC sp_configure N'min server memory (MB)'为什么还有个N呢?
create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS)
insert tb values('Abac') select replace(a,'a','test') from tbdrop table tb
--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了 --示例
create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS)
insert tb values('Abac') select replace(a,'a','test') from tbdrop table tb
正解。用排序规则就可以了,很多种排序规则都是区分大小写的。还有binnary,asc等等。这些规则名的具体写法参照手册。
select * from a
/*
a_nam a_add
---------- ----------
1 aa
1 bb
2 cc
2 vv
2 kk
3 dd
3 ee
4 dd
5 ee
6 yy
6 yy(11 row(s) affected)
*/
现在我们查询a_add = 'aa'的,'Aa'等等不行!
Example 1:select * from a
where a_add collate Chinese_PRC_CS_AS_WS = 'aa'
/*
a_nam a_add
---------- ----------
1 aa(1 row(s) affected)
*/Example 2:select * from a
where a_add collate Chinese_PRC_CS_AS_WS = 'Aa'
/*
a_nam a_add
---------- ---------- (0 row(s) affected)
*/方法三.上面的记不住,那么就用最笨的方法,转化为ascii
select * from a
where
ascii(substring(a_add,1,1)) = ascii(substring('Aa',1,1))
and
ascii(substring(a_add,2,1)) = ascii(substring('Aa',2,1))
/*
a_nam a_add
---------- ---------- (0 row(s) affected)
*/