我有一个表格样本,如下所示:
KeyID Name ID Location
--------------------------------------------
20063 A DA 20439 AEP DA
20063 A DA 20063 APS DA
20063 A DA 20032 APS RT
20063 A RT 20032 APS RT
20063 B RT 20032 APS DA Legacy
仅选择Name
和Location
两者都以DA
或RT
结尾的行。
异常:如果location以legacy结尾,则包括row。
20063 A DA 20439 AEP DA
20063 A DA 20063 APS DA
20063 A RT 20032 APS RT
20063 B RT 20032 APS DA Legacy
如何比较此SQL的同一行?
答案 0 :(得分:2)
这样的东西应该在MySQL中起作用,但很可能在其他SQL中也是如此:
SELECT * FROM TABLE
WHERE location like '% Legacy'
OR (
SUBSTRING(name,-2)='DA' AND SUBSTRING(location,-2)='DA'
OR
SUBSTRING(name,-2)='RT' AND SUBSTRING(location,-2)='RT'
)
答案 1 :(得分:0)
如果使用Microsoft SQL,您可能需要执行类似的操作。你反转字符串,使用长度为2的第一个字符中的子字符串拉出前2个字符,然后再将其反转以使其以正确的方式返回。
SELECT * FROM TABLE
WHERE location like '% Legacy'
OR
(
reverse(substring(reverse(name),1,2))='DA'
AND
reverse(substring(reverse(location),1,2))='DA'
OR
reverse(substring(reverse(name),1,2))='RT'
AND
reverse(substring(reverse(location),1,2))='RT'
)