比较同一行SQL的两列

时间:2014-04-07 17:14:45

标签: sql

我有一个表格样本,如下所示:

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       

仅选择NameLocation两者都以DART结尾的行。

异常:如果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的同一行?

2 个答案:

答案 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'
     )