[小技巧推荐]SQL Server数据库查询区分大小写、全半角——排序规则的应用
献丑开始了.....
因为偶然的原因,需要在INNER JOIN联表时,让对应字段进行区分大小写的比较。而默认情况下建立的Sql Server数据库是不区分大小写的,这个需求怎么实现呢?
要实现这个需求,至少有三个操作级别来实现:
1. 数据库级别:整个数据库中的char、varchar、text、nchar、nvarchar 和 ntext 数据都区分大小写。(为描述方便,下文不再明确强调这些数据类型。)但这样做有个明显的坏处,那就是整个数据库的这些字段的比较,都要进行严格匹配。比如下面的两条Sql语句会得到完全不同的两种结果:
SELECT * FROM [TABLE] WHERE [COLUMN] LIKE ‘%KeyWord%’SELECT * FROM [TABLE] WHERE [COLUMN] LIKE ‘%keyword%’
use tempdbset nocount on--1--print '建立初始数据表Customer'create table Customer(id int,uname varchar(10))insert into Customer select 1,'Jim' union allselect 2,'Simith' union allselect 3,'uonun'select * from Customer--2--print '建立初始数据表Info'create table Info(uname varchar(10),phone varchar(11))insert into Info select 'JIM','13800000000' union allselect 'Simith','13911111111' union allselect 'uonun','13812345678'select * from Info--3--print '不区分大小写,不区分全半角'select c.id,c.uname as 'c.uname',i.uname as 'i.uname',i.phonefrom Customer as c inner join Info as ion c.uname = i.uname--4--print '区分大小写,不区分全半角'select c.id,c.uname as 'c.uname',i.uname as 'i.uname',i.phonefrom Customer as c inner join Info as ion c.uname = i.unamecollate Chinese_PRC_CS_AS--5--print '不区分大小写,区分全半角'select c.id,c.uname as 'c.uname',i.uname as 'i.uname',i.phonefrom Customer as c inner join Info as ion c.uname = i.unamecollate Chinese_PRC_CI_AI_WS--6--print '区分大小写,区分全半角'select c.id,c.uname as 'c.uname',i.uname as 'i.uname',i.phonefrom Customer as c inner join Info as ion c.uname = i.unamecollate Chinese_PRC_CS_AI_WSDROP TABLE CustomerDROP TABLE Info/*建立初始数据表Customerid uname----------- ----------1 Jim2 Simith3 uonun建立初始数据表Infouname phone---------- -----------JIM 13800000000Simith 13911111111uonun 13812345678不区分大小写,不区分全半角id c.uname i.uname phone----------- ---------- ---------- -----------1 Jim JIM 138000000002 Simith Simith 139111111113 uonun uonun 13812345678区分大小写,不区分全半角id c.uname i.uname phone----------- ---------- ---------- -----------2 Simith Simith 139111111113 uonun uonun 13812345678不区分大小写,区分全半角id c.uname i.uname phone----------- ---------- ---------- -----------1 Jim JIM 138000000003 uonun uonun 13812345678区分大小写,区分全半角id c.uname i.uname phone----------- ---------- ---------- -----------3 uonun uonun 13812345678*/