Различная сортировка для сервера и базы данных, которая "сильнее"? - PullRequest
0 голосов
/ 03 июля 2011

У меня запущен sqlserver 2008 с параметрами сортировки: Finnish_Swedish_CI_AS

У меня также есть таблица на этом сервере с набором параметров сортировки: SQL_Latin1_General_CP437_CS_AS

В таблице у меня есть столбец с именем Материал, который содержит

abcf abcf DF

SELECT Allowable  FROM [Mat].[dbo].[D100601EN6115K3] WHERE Thickness = 2 AND CHARINDEX('F', Material)>0

Возвращает допустимые значения для всех трех строк, содержащих «f» или «F» Как я могу сделать поиск чувствительным к регистру, чтобы получить допустимое значение только из последней строки? Я надеюсь, что есть простой способ, потому что я не хочу заново настраивать весь сервер ...

1 Ответ

0 голосов
/ 03 июля 2011

Вы используете предложение COLLATE, чтобы изменить параметры сортировки выражения

SELECT Allowable
FROM [Mat].[dbo].[D100601EN6115K3]
WHERE Thickness = 2 AND CHARINDEX('F', Material COLLATE SQL_Latin1_General_CP437_CS_AS) > 0

Предложение COLLATE может идти против целого выражения или только ссылки на столбец.

Если материал уже имеетМатериал сортировки COLLATE SQL_Latin1_General_CP437_CS_AS, тогда должно быть

CHARINDEX('F' COLLATE SQL_Latin1_General_CP437_CS_AS, Material)

Извините, не на 100% ясно, какой столбец является CS: Материал или другой.

По сути, 'F' - это сопоставлениесервера или базы данных, если отличается

...