5

我有一个数据库,我正在尝试执行以下查询:

SELECT COUNT(*) FROM [Resource] WHERE Name LIKE 'ChinaApp%'

SELECT COUNT(*) FROM [Resource] WHERE Name LIKE 'Chinaapp%'

这将返回 2 个不同的计数:

计数

我想到的第一件事是检查区分大小写。我检查了服务器级别、数据库级别和列级别的排序规则:

服务器级别:Latin1_General_CI_AS

SELECT SERVERPROPERTY('COLLATION')

服务器级别

数据库级别:Danish_Norwegian_ CI _AS

SELECT DATABASEPROPERTYEX('Data Warehouse', 'Collation')

数据库级别

列级别:Danish_Norwegian_CI_AS

SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Resource'
AND COLUMN_NAME = 'Name'

列级

问题 :

查询出了什么问题?如前所述,区分大小写被禁用。为什么计数不一样?

4

2 回答 2

2

Danish_Norwegian_CI_AS是问题所在!谢谢@realspirituals 的提示!

在我拥有的这个默认排序规则中,'aa' 实际上是一个字符。以下链接中的最后一行解释了它。Å, å, AA,Aaaa都是一样的。

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
于 2013-09-23T11:49:04.757 回答
1

尝试这个:

SELECT COUNT ( * ) FROM [RESOURCE] WHERE Name COLLATE SQL_Latin1_General_CI_AS LIKE 'Chinaapp%'
于 2013-09-23T09:50:10.130 回答