我有两个表,每个表在不同的数据库上的同一服务器...with多列。
我需要获取其中一列的值出现在TableA中而不是TableB中的记录。此列在TableA中是字母数字(BIGINT),而在TableB中则不同,它是ShortDescription(varchar(100))
TableB列的值只能是与表A列相同但不带字符的数字(例如123),而TableA列值可以包含例如"ab123“
现在,如果TableA中的值"abc123“出现在表A中,而值" 123”不在表B中,那么我应该从表A中获取该记录。如果表B中存在该列的值123,那么我不应该获取该列。
怎么办?
发布于 2019-10-31 13:07:50
您需要使用PATINDEX从TableA.Column1中查找数字,然后与TableB.Column2进行匹配。以下是为您提供的查询:
Select Column1 FROM TableA WHERE EXISTS (SELECT 1 FROM TableB WHERE SUBSTRING(CAST(Column1 AS VARCHAR),PATINDEX('%0-9%',CAST(Column1 AS VARCHAR)),LEN(Column1))=Column2)
我假设您在两个表之间没有公共列。否则,您可以使用common列进行连接,并将PATINDEX语句放在WHERE子句中。
发布于 2019-10-31 12:28:44
尝试此查询。它通过连接两个表,然后利用WHERE子句,使事情变得简单。我只将两个表之间的公共列称为"Id“,用于连接:
SELECT * FROM TableA
LEFT JOIN TableB ON TableA.Id = TableB.Id
WHERE TableA.Column1 = "ab123" AND TableB.ShortDescription != "123";https://stackoverflow.com/questions/58636738
复制相似问题