Предположим, что имеется таблица с именем "MyTable" с тремя столбцами:Weird SQL Behavior, почему этот запрос ничего не возвращает?
{**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
Сервер Collation: Latin1_General_CI_AS
Версия: 9.00.3073.00
Уровень: SP2
Издание: Редакция разработчика
Sever Collation: SQL_Latin1_General_CP1_CI_AS
Версия: 9.00.3054.00
Уровень: SP2
Издание: 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
Ожидаемые результаты. @ Кириллический литерал новичка преобразуется в вопросительные знаки, у него, скорее всего, есть некоторые проблемы с кодированием на стороне клиента. – Quassnoi
Не могли бы вы рассказать, какую версию SQL-сервера вы используете. Благодаря! – Newbie