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并使用该结果在第二个查询中搜索?
可能f_firm_name- 中的第一个字符是空格。
所以试试这个——
\n\nSELECT 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\nRun Code Online (Sandbox Code Playgroud)\n