Предположим, есть таблица с именем "myTable" с тремя столбцами:
{**ID**(PK, int, not null),
**X**(PK, int, not null),
**Name**(nvarchar(256), not null)}.
Пусть {4, 1, аккаунт} будет запись в таблице.
select * from myTable as t
where t.ID=4
AND t.X = 1
AND ( t.Name = N'аккаунт' )
select * from myTable as t
where t.ID=4
AND t.X = 1
AND ( t.Name LIKE N'%аккаунт%' )
Первый запрос возвращает запись, а второй нет? Почему?
Системы, в которых возникают проблемы:
* Windows XP - Professional - Версия 2002 - SP3
Сортировка сервера: Latin1_General_CI_AS
Версия: 9.00.3073.00
Уровень: SP2
Edition: Developer Edition
Разобрать параметры сортировки: SQL_Latin1_General_CP1_CI_AS
Версия: 9.00.3054.00
Уровень: SP2
Edition: Enterprise Edition
Результаты:
SELECT SERVERPROPERTY('SQLCharSetName')
iso_1
Using OSQL.exe
0x30043A043A04300443043D04420400000000000000000000000000000000
0x3F3F3F3F3F3F3F0000000000000000000000000000000000000000000000
0x253F3F3F3F3F3F3F25000000000000000000000000000000000000000000
SELECT CAST(name AS BINARY),
CAST(N'аккаунт' AS BINARY),
CAST(N'%аккаунт%' AS BINARY)
FROM myTable t
WHERE t.ID = 4
AND t.X = 1
CAST(name AS BINARY)
0x30043A043A04300443043D04420400000000000000000000000000000000
CAST(N'аккаунт' AS BINARY)
0x3F3F3F3F3F3F3F0000000000000000000000000000000000000000000000
CAST(N'%аккаунт%' AS BINARY)
0x253F3F3F3F3F3F3F25000000000000000000000000000000000000000000