2

我有这个查询

SELECT column1 FROM Table1 WHERE column1 LIKE CONCAT('%', :regex, '%') OR (column2 IS NOT NULL AND column2 LIKE CONCAT('%', :regex, '%')

column1如果记录Table1满足 where 子句,则始终返回值。但我想要的是,如果满足 where 子句column1的第一部分,则查询返回值,如果满足第二部分,则返回值。我应该如何修改查询以实现此结果?LIKE CONCAT('%', :regex, '%')column2(column2 IS NOT NULL AND column2 LIKE CONCAT('%', :regex, '%')

4

1 回答 1

3

一种选择是使用CASE语句:

SELECT 
    CASE 
       WHEN column1 LIKE CONCAT('%', :regex, '%') THEN column1
       ELSE column2 
    END yourcolumn
FROM Table1
WHERE column1 LIKE CONCAT('%', :regex, '%') 
    OR (column2 IS NOT NULL AND column2 LIKE CONCAT('%', :regex, '%')
于 2013-03-19T16:33:52.737 回答