扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年5月25日
关键字: SQL Server
在本页阅读全文(共3页)
列表B是一些查询,对于大小写不敏感的情况,这几个查询将返回相同的四个数据行,但是如果我们的任务是从数据行中选取大小写完全匹配的记录呢?
SELECT * FROM CaseCheck.Names
SELECT * FROM CaseCheck.Names WHERE Name = 'fuller'
SELECT * FROM CaseCheck.Names WHERE Name = 'FULLER'
SELECT * FROM CaseCheck.Names WHERE Name = 'fuller'
GO
列表 B
现在我们就要使用校勘的功能了,尽管在数据库创建的时候,数据库管理员已经指定了校勘的选项,但是您可以通过WHERE语句中的COLLATE选项来使用不同的校勘设定,在列表C的查询中,前三个都返回了一条记录,而最后一个查询的返回结果为空。
SELECT * FROM CaseCheck.Names WHERE Name = 'fuller' COLLATE Latin1_General_CS_AS
SELECT * FROM CaseCheck.Names WHERE Name = 'FULLER' COLLATE Latin1_General_CS_AS
SELECT * FROM CaseCheck.Names WHERE Name = 'fuller' COLLATE Latin1_General_CS_AS
SELECT * FROM CaseCheck.Names WHERE Name = 'FUllER' COLLATE Latin1_General_CS_AS
GO
列表 C
假设您现在想把所有'fuller'形式的拼写改为'Fuller'(包括像'fUlLEr'这种毫无意义的拼写组合),通过列表D中的代码,您可以非常轻松地实现这一功能。
UPDATE CaseCheck.NamesSET Name = UPPER(LEFT(Name,1)) + LOWER(SUBSTRING(Name,2,LEN(Name)-1))
列表 D
从大型主机上导入数据的时候,我都会首先运行以上的代码,这样就不必再担心单词大小写的问题了。
如果您想查看所有的校勘选项及其简要说明,可以运行以下的SQL代码:
SELECT * FROM ::fn_helpcollations()
想要查看数据库当前的校勘设定,可以使用以下代码:
SELECT collation_name
FROM master.sys.databases
WHERE Name='SQLTips'
在列表E中,我添加了一些带有特殊字符的数据行,我使用了我的好朋友DejanSunderic的名字,他的名字应该拼写为Šunderic'(字母c实际上应该有重音符号的,由于使用的字体,所以显示成了现在的效果)。
INSERT INTO CaseCheck.Names VALUES (NChar(352)+ 'underi' + NChar(263))
INSERT INTO CaseCheck.Names VALUES ('SUNDERIC')
INSERT INTO CaseCheck.Names VALUES('sUnDeRI' + Nchar(263))
INSERT INTO CaseCheck.Names VALUES('Sunderi' + Nchar(263))
GO
列表 E
如果不使用COLLATE,那么会发生非常有意思的事情,运行一下的查询语句:
SELECT *
FROM CaseCheck.Names
WHERE Name LIKE N'S%'
您得到的结果是:
NamePK Name
6 SUNDERIC
7 sUnDeRIc
8 Sunderic
注意,带有特殊字符的'Šunderic'并没有被包含在内,让我们再来看看另外一个实验:
SELECT * FROM CaseCheck.Names
ORDER BY Name
运行此查询的结果如下:
NamePK Name
5 Šunderic
1 Fuller
2 FuLLer
3 FULLER
4 fuller
6 SUNDERIC
7 sUnDeRIc
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者