複数のLIKEを扱うINとREGEXP表現



保護所に入った場合(ANIMAL INS表)は中性化(Inteact)ではありません
保護所を出る時(ANIMAL OUTS表)中性動物を探すべきです.
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS AS INS
    INNER JOIN ANIMAL_OUTS AS OUTS
    ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%'
AND (OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%'
OR OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%')
最初はこう書いていましたが、
現実のデータベースを考えると、LIKE条件が多くなる可能性があります.
これは、可読性とコード無効性を同時にもたらす可能性のある要因になります.
プログラミング言語で共通の式であるため、正規表現を使用できます.
知っていればずっと役に立つようです.練習が必要です.
# 다중 LIKE 방지
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS AS INS
    INNER JOIN ANIMAL_OUTS AS OUTS
    ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%'
AND OUTS.SEX_UPON_OUTCOME REGEXP 'Spayed|Neutered'
ORDER BY INS.ANIMAL_ID ASC
WHEREセクションでは|OR条件を作成し、2つの文を一度に処理できます.

この問題は多重LIKE問題です
最初はこう書いていましたが、通らなかったので、ずっと理由を探していました.
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME REGEXP 'Lucy|Ella|Pickle|Rogan|Sabrina|Mitty'
ORDER BY ANIMAL_ID
理由は、
プログラマが返すデータは、答えをチェックするデータとは異なります.
WHERE節に正しい一致条件を与えるためには、式を条件のみを含む(|)形式に書くことはできません.
開始と終了を指定するには、正規表現の^と$式を使用する必要があります.
(出典:https://programmers.co.kr/questions/7677)
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME REGEXP '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$'
ORDER BY ANIMAL_ID