SQL不喜欢似乎不起作用

时间:2014-01-15 10:14:07

标签: sql-server sql-like

我做错了什么?我在这里撕扯我的头发!

我有两个来自不同服务器的表,通过ID字段链接。基本上在一个服务器中正确记录颜色(白色,黑色等)但是在第二个颜色记录有描述(白色 - 维多利亚窗口,玫瑰 - 维多利亚开门) 我的任务是生成一个查询,返回颜色不匹配的记录。

我制作了以下内容:

SELECT a.orderid, 
       a.colour    AS LoggedColor, 
       b.groupdesc AS [Processed Color] 
FROM   [Server].[DB].[dbo].[frames] AS b 
       INNER JOIN tblorder AS a 
               ON a.orderid = b.header_id 
WHERE  b.colour NOT LIKE '%' + a.colour + '%' 

然而,like语句似乎没有起作用,因为它返回以下内容:

记录颜色=白色

处理颜色=白色 - 维克窗口

进一步了解它实际上是在返回所有记录。

仅供参考我无法改变数据库结构 - 我与创作者就我的想法进行了多次热烈的讨论。

提前致谢

2 个答案:

答案 0 :(得分:2)

看起来你有一些空格。试试这个:

SELECT a.orderid, 
       a.colour    AS LoggedColor, 
       @a_colour
       b.groupdesc AS [Processed Color] 
FROM   [Server].[DB].[dbo].[frames] AS b 
       INNER JOIN tblorder AS a 
               ON a.orderid = b.header_id 
WHERE  b.colour NOT LIKE '%' + LTRIM(RTRIM(a.colour)) + '%'

答案 1 :(得分:-1)

正确的语法是

WHERE NOT b.colour LIKE '%' + a.colour + '%'