2013-06-05 15 views
6

Wenn ich diese Abfrage verwenden:SQL Server: Warum werden keine Zeilen gefunden?

SELECT TOP 20 
    f.name as f_firm_name 
FROM Firm f 
WHERE f.id_city = '73041' COLLATE SQL_Latin1_General_Cp1251_CI_AS 
ORDER BY f.name ASC 

bekomme ich diese Ergebnisse:

f_firm_name 
-------------------------------- 
SKY LINE STUDIO 
АНТИКВАРНЫЙ САЛОН 
БИЗОН УЛЬЯНОВСК 
ВЕРТЕКС ЗАО 
ВОЗРОЖДЕНИЕ+ 
ВОЛГАСПЕЦТЕХНОЛОГИИ 
ГП СЕРВИС 
Данилов А.Б.ИП 
ИНИКОМ 
ИП МАЛАШИН В.Б. 
ИП СУЛАГАЕВ АНДРЕЙ 

(20 row(s) affected) 

Aber wenn ich diese Abfrage verwenden:

f_firm_name 
----------------- 
(0 row(s) affected) 
:

SELECT TOP 20 
    f.name as f_firm_name 
FROM Firm f 
WHERE f.id_city='73041' 
    AND f.name LIKE 'ВЕРТЕКС ЗАО%' COLLATE SQL_Latin1_General_Cp1251_CI_AS 
ORDER BY f.name ASC 

ich diese Ergebnisse erhalten

Warum erhalte ich 0 rows, wenn ich in der ersten Abfrage f.name bekomme und dieses Ergebnis verwende, um in der zweiten Abfrage zu suchen?

+2

Funktioniert 'LIKE N'ВЕРТЕКС ЗАО%? Wenn ja, wie lautet die Standardsortierung der Datenbank? Was ist der Datentyp der Spalte? –

+0

Ich bekomme das korrekte Ergebnis mit SQL Server 2012. Mit welcher Kollatierung wurde Ihre Datenbank erstellt? –

Antwort

4

Möglich, das erste Zeichen in f_firm_name - ist ein Leerzeichen.

So versuchen diese eine -

SELECT TOP 20 f_firm_name = f.name 
FROM dbo.Firm f 
WHERE f.id_city = '73041' 
    AND LTRIM(f.name) LIKE 'ВЕРТЕКС ЗАО%' --<-- 
     COLLATE SQL_Latin1_General_Cp1251_CI_AS 
ORDER BY f.name 
1

Wahrscheinlich Kollation der Datenbank nicht standardmäßig die Zeichen in der Stringliteral unterstützen und sie verloren gehen.

Unter meiner Standardsortierung SELECT 'ВЕРТЕКС ЗАО' kehrt ??????? ???

Wenn die Spalte nvarchar Verwendung LIKE N'ВЕРТЕКС ЗАО%'

Wenn es varchar Verwendung ist

LIKE CAST(N'ВЕРТЕКС ЗАО%' COLLATE SQL_Latin1_General_Cp1251_CI_AS AS VARCHAR(50)) 

, da dies eine implizite Umwandlung verhindert und ist sargable.

+0

Spalte varchar, Abfrage mit 'LIKE CAST (N'ВЕРТЕКС ЗАО% 'COLLATE SQL_Latin1_General_Cp1251_CI_AS AS VARCHAR (50))' nicht funktionieren ... in Ergebnis bekomme ich 0 Zeilen –

Verwandte Themen