2014-12-13 88 views
0

我很抱歉,如果我没有让自己清楚,我的SQL查询技能仅限于我可以在网上找到的东西。将'%searchstring%'与第二个表中的字段进行比较?

我想结合一个表中的2个字段,然后将它(=或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。

回答

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+'%' 

您可能需要一些别名这些列...

+0

不错!这工作,谢谢我的朋友救了我的屁股.... – 2014-12-13 04:09:49

+0

@EricBruening - 很高兴我们可以帮助。 – sgeddes 2014-12-13 04:11:24

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; 

然而,这只是一个猜测。没有样本数据或表格布局,没有办法确定适当的标准是什么。

+0

我喜欢JOIN的想法,但CardHolders表中没有CardNumber字段,我将CardHolder中的First和Last名称组合起来,以创建与Card表中的CardName进行比较的内容。 ON c.CardNumber = ch.CardNumber出错。这两个表上没有共同的字段。这是我最大的问题。 – 2014-12-13 03:54:03

+0

两张桌子里有什么常见的字段? – 2014-12-13 03:55:42

+0

'LIKE'%TEST%'='? – 2014-12-13 03:55:53

相关问题