複数のLIKEを扱うINとREGEXP表現
4558 ワード
保護所に入った場合(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
Reference
この問題について(複数のLIKEを扱うINとREGEXP表現), 我々は、より多くの情報をここで見つけました https://velog.io/@cyanred9/SQL-다중-LIKE를-처리하는-IN과-REGEXP-표현テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol