当我使用此查询时:

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

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

(20 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

我得到这些结果:
f_firm_name
-----------------
(0 row(s) affected)

如果在第一个查询中获得0 rows并使用该结果在第二个查询中进行搜索,为什么我会得到f.name

最佳答案

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

所以试试这个-

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

关于sql-server - SQL Server : why are there no rows found?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16938022/

10-13 09:11