SQL Server:为什么没有找到行?

Leo*_*oki 6 sql-server sql-server-2008

当我使用此查询时:

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
Run Code Online (Sandbox Code Playgroud)

我得到这些结果:

f_firm_name
--------------------------------
 SKY  LINE STUDIO
 ??????????? ?????
 ????? ?????????
 ??????? ???
 ???????????+
 ???????????????????
 ?? ??????
 ??????? ?.?.??
 ??????
 ?? ??????? ?.?.
 ?? ???????? ??????

(20 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

但是如果我使用这个查询:

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
Run Code Online (Sandbox Code Playgroud)

我得到这些结果:

f_firm_name
-----------------
(0 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

为什么我0 rows在第一个查询中得到f.name并使用该结果在第二个查询中搜索?

Dev*_*art 4

可能f_firm_name- 中的第一个字符是空格。

\n\n

所以试试这个——

\n\n
SELECT TOP 20 f_firm_name = f.name  \nFROM dbo.Firm f \nWHERE f.id_city = '73041'\n    AND LTRIM(f.name) LIKE '\xd0\x92\xd0\x95\xd0\xa0\xd0\xa2\xd0\x95\xd0\x9a\xd0\xa1 \xd0\x97\xd0\x90\xd0\x9e%' --<--\n        COLLATE SQL_Latin1_General_Cp1251_CI_AS \nORDER BY f.name\n
Run Code Online (Sandbox Code Playgroud)\n