カテゴリー

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である行」
が抽出できます。
この記事を書いた人
蝉山 蝉山
生き物が大好きなエンジニアです。
山梨県で、身近な自然を楽しみながら暮らしています。
自作の漫画4コマイラストも制作しています。

かわいい恐竜のLINE着せ替えTシャツ・グッズも販売中!

詳細なプロフィールはこちら。

ツイッター:
インスタグラム:

プログラミング

Posted by 蝉山