比较两个具有不同值的表

时间:2019-10-31 04:00:07

标签: sql sql-server sql-server-2016

我在同一台服务器的不同数据库中有两个表...在SQL中有多列。

我需要获取记录,其中我使用的某一列的值存在于TableA中,而不存在于TableB中。此列在TableA中是字母数字(BIGINT),而在TableB中则不同,它是ShortDescription(varchar(100))

TableB列的值只能是与Table A列相同的数字,但不能包含字符(例如123),而TableA列的值可以包含例如“ ab123”

现在,如果表A中存在表A中的值“ abc123”,而表B中不存在值“ 123”,那么我应该从表A中获取该记录。如果表B中的该列中存在123,则我不应该获取。

怎么办?

2 个答案:

答案 0 :(得分:0)

尝试此查询。通过联接两个表,然后利用WHERE子句,可以使事情变得简单。我只是将两个表之间的公共列称为“ Id”以进行连接:

SELECT * FROM TableA 
LEFT JOIN TableB ON TableA.Id = TableB.Id 
WHERE TableA.Column1 = "ab123" AND TableB.ShortDescription != "123";

答案 1 :(得分:0)

您需要PATINDEX从TableA.Column1中查找数字,然后将其与TableB.Column2进行匹配。以下是您的查询:

从存在表A的表中选择Column1(从存在变化的表B的表中选择1(CAST(CAST(Column1 AS VARCHAR),PATINDEX('%[0-9]%',CAST(Column1 AS VARCHAR))),LEN(Column1))=列2)

我假设您在两个表之间没有公共列。否则,您可以使用公共列进行联接,并将PATINDEX语句放在WHERE子句中。