Pergunta

I have a database and I am trying to execute the following query:

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

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

This is returning 2 different counts:

Counts

The first thing that came to my mind is to check the case sensitivity. I checked the collation on the server level, the database level and the column level:

Server level : Latin1_General_CI_AS

SELECT SERVERPROPERTY('COLLATION')

Server level

Database level : Danish_Norwegian_CI_AS

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

Database level

Column level : Danish_Norwegian_CI_AS

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

Column level

Question :

What is going wrong with the query? The case sensitivity is disabled as proven before. Why the counts are different?

Foi útil?

Solução 2

Try this:

SELECT COUNT ( * ) FROM [RESOURCE] WHERE Name COLLATE SQL_Latin1_General_CI_AS LIKE 'Chinaapp%'

Outras dicas

Danish_Norwegian_CI_AS is the issue! Thank you @realspirituals for the hint!

In this default collation I have, 'aa' is actually one single character. The last line in the following link explain it. Å, å, AA, Aa and aa are all the same.

Collation chart for Danish_Norwegian_CI_AS

The following queries now provide the correct result set (count):

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

and

SELECT COUNT(*) FROM [Resource] WHERE Name LIKE 'Chinaapp%'
COLLATE Latin1_General_CI_AS
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top