mysql条件选择查询基于where子句

时间:2013-03-19 16:30:48

标签: sql where-clause

我有这个查询

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

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

1 个答案:

答案 0 :(得分: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, '%')