Принятый ответ показывает, что он не входит в игру для сравнения N'a' = 'a'
. Это легко объяснить, потому что char
будет неявно преобразован в nchar
при сравнении между этими двумя значениями, так что обе строки в сравнении имеют Unicode.
Я только что подумал о примере места, где чувствительность к ширине может вступить в игру в латинице, только чтобы обнаружить, что и там, похоже, вообще нет никакой разницы ...
DECLARE @T TABLE (
a VARCHAR(2) COLLATE Latin1_General_100_CS_AS_WS,
b VARCHAR(2) COLLATE Latin1_General_100_CS_AS_WS )
INSERT INTO @T
VALUES (N'Æ',
N'AE');
SELECT LEN(a) AS [LEN(a)],
LEN(b) AS [LEN(b)],
a,
b,
CASE
WHEN a = b THEN 'Y'
ELSE 'N'
END AS [a=b]
FROM @T
LEN(a) LEN(b) a b a=b
----------- ----------- ---- ---- ----
1 2 Æ AE Y
Об этом говорится в книге "Внутренние компоненты Microsoft SQL Server 2008".
Ширина чувствительности относится к Восточной Азии
языки, для которых существуют оба
полуширина и полуширина формы
некоторые символы.
Абсолютно ничто не мешает вам хранить эти символы в сопоставлении, таком как Latin1_General_100_CS_AS_WS
, если столбец имеет тип данных Unicode, поэтому я предполагаю, что часть WS
будет применяться только в этой конкретной ситуации.