Angenommen, ein Tisch "myTable" mit drei Spalten benannt ist:Seltsames SQL-Verhalten, warum gibt diese Abfrage nichts zurück?
{**ID**(PK, int, not null),
**X**(PK, int, not null),
**Name**(nvarchar(256), not null)}.
Let {4, 1, аккаунт} eine Aufzeichnung auf dem Tisch.
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'%аккаунт%' )
Die erste Abfrage gibt den Datensatz zurück, die zweite jedoch nicht? Warum?
Systeme, in denen diese Themen erfahren werden:
* Windows XP - Professional - Version 2002 - SP3
Server-Sortierungs: Latin1_General_CI_AS
Version: 9.00.3073.00
Level: SP2
Ausgabe: Entwickler-Edition
Sever Sortierungs: SQL_Latin1_General_CP1_CI_AS
Version: 9.00.3054.00
Level: SP2
Ausgabe: Enterprise Edition
Ergebnisse:
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
Diese Ergebnisse werden erwartet. @ Newbie's kyrillisches Literal wird in Fragezeichen umgewandelt, er hat höchstwahrscheinlich einige Probleme mit der Kodierung auf der Client-Seite. – Quassnoi
Können Sie bitte sagen, welche Version von SQL Server Sie verwenden. Vielen Dank! – Newbie