12/12 いただいたメッセージへのご返信はこちら

MySQLのFIND_IN_SET()の逆(ある値が対象カラムに含まれない場合)と、NULLへの対応

MySQLのFIND_IN_SET()は「ある値が、対象カラムに含まれるか否か」
を判別する関数ですが、その逆をやりたい場合があります。

その場合、下記のコードを使います。

SELECT
    *
FROM
    test_table
WHERE
    NOT FIND_IN_SET('探す値', '対象カラム')


MySQLのFIND_IN_SET()の逆 NULL対応

対象カラムにNULLが入っている場合、FIND_IN_SET()はNULLを返すため、上のコードだとうまく動作しません。
対象カラムでNULLを許可している場合は、NULL用の判定も入れる必要があります。


SELECT
    *
FROM
    test_table
WHERE
    ('対象カラム' IS NULL OR NOT FIND_IN_SET('探したい値', '対象カラム'))


上のクエリで「探したい値が対象カラムに含まれない、もしくは対象カラムがNULLである行」
が抽出できます。
この記事を書いた人
せみやま せみやま
生き物が大好きなWebエンジニアです。
身近な自然を楽しみながら暮らしています。

生き物とサブカルのポッドキャスト「セミラジオ」を配信中です!

詳細なプロフィール