2

このクエリがあります

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

のレコードがwhere 句column1を満たす場合、常に値を返します。しかし、私が望むのは、where 句の最初の部分が満たされている場合Table1はクエリが値を返し、2 番目の部分が満たされている場合は値を返すことです。この結果を得るには、クエリをどのように変更すればよいですか?column1LIKE CONCAT('%', :regex, '%')column2(column2 IS NOT NULL AND column2 LIKE CONCAT('%', :regex, '%')

4

1 に答える 1

3

1 つのオプションは、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 に答える