比较'%searchstring%'从第二张桌子的字段?

时间:2014-12-13 03:38:15

标签: sql sql-server

如果我不清楚,我很抱歉,我的SQL查询技巧仅限于我在网上找到的内容。

我正在尝试将一个表中的两个字段组合,然后将它(=或LIKE)与同一数据库中另一个表上的字段进行比较。

下面我的示例没有错误,它只是不返回任何数据。

SELECT 
    CardNumber
   ,CardName
   ,(Firstname+' '+Lastname) as '%TEST%'
  From AxiomData.dbo.Cards,AxiomData.dbo.Cardholders
  WHERE '%TEST%' = AxiomData.dbo.Cards.CardName 
ORDER BY CardName ASC;

我需要将一个表中的CardNumber与另一个表中的CardName匹配。

2 个答案:

答案 0 :(得分:0)

假设我正确理解了您的问题,并且您没有要从每个表中加入的匹配列,请将名称条件移至join

SELECT 
    CardNumber
   ,CardName
   ,(Firstname+' '+Lastname) as FullName
FROM AxiomData.dbo.Cards C 
   JOIN AxiomData.dbo.Cardholders CH 
       ON Firstname+' '+Lastname = C.CardName 
ORDER BY CardName ASC;

如果您尝试匹配相似的名称并需要使用like,请在join中尝试类似的内容:

ON C.CardName LIKE '%'+Firstname+'%'+Lastname+'%'

您可能需要为其中一些列添加别名...

答案 1 :(得分:0)

据推测,您希望表之间有join。但是,当前的问题是=。您似乎想要like

 WHERE AxiomData.dbo.Cards.CardName LIKE '%TEST%'

我想你想要的完整查询如下:

SELECT CardNumber, CardName, (Firstname+' '+Lastname) as FullName
From AxiomData.dbo.Cards c JOIN
     AxiomData.dbo.Cardholders ch
     ON c.CardNumber = ch.CardNumber
WHERE c.CardName LIKE '%TEST%'
ORDER BY c.CardName ASC;

然而,这只是猜测。如果没有样本数据或表格布局,则无法确定正确的join条件是什么。