我有一个数据库,我正在尝试执行以下查询:
SELECT COUNT(*) FROM [Resource] WHERE Name LIKE 'ChinaApp%'
SELECT COUNT(*) FROM [Resource] WHERE Name LIKE 'Chinaapp%'
这将返回两个不同的计数:
我想到的第一件事是检查区分大小写。我检查了服务器级别,数据库级别和列级别的排序规则:
SELECT SERVERPROPERTY('COLLATION')
SELECT DATABASEPROPERTYEX('Data Warehouse', 'Collation')
SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Resource'
AND COLUMN_NAME = 'Name'
查询出了什么问题?如前所述,已禁用区分大小写。为什么计数不同?
答案 0 :(得分:2)
Danish_Norwegian_CI_AS 是个问题!谢谢@realspirituals提示!
在我的默认排序规则中,'aa'实际上是一个单个字符。以下链接的最后一行解释了它。 Å
,å
,AA
,Aa
和aa
都是一样的。
Collation chart for Danish_Norwegian_CI_AS
以下查询现在提供了正确的结果集(计数):
SELECT COUNT(*) FROM [Resource] WHERE Name LIKE 'ChinaApp%'
和
SELECT COUNT(*) FROM [Resource] WHERE Name LIKE 'Chinaapp%'
COLLATE Latin1_General_CI_AS
答案 1 :(得分:1)
试试这个:
SELECT COUNT ( * ) FROM [RESOURCE] WHERE Name COLLATE SQL_Latin1_General_CI_AS LIKE 'Chinaapp%'