https://school.programmers.co.kr/learn/courses/30/lessons/59045
코드설명
INNER JOIN + LIKE 를 활용합니다.
코드
SELECT AI.ANIMAL_ID, AI.ANIMAL_TYPE, AI.NAME
FROM ANIMAL_INS AS AI
INNER JOIN ANIMAL_OUTS AS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.SEX_UPON_INTAKE LIKE 'INTACT%' AND (AO.SEX_UPON_OUTCOME LIKE 'SPAYED%' OR AO.SEX_UPON_OUTCOME LIKE 'NEUTERED%')
ORACLE
REGEXP_LIKE를 활용합니다.
여기서 'i'를 활용하여 대소문자를 무시하는데, 이떄 'i'는 'IGNORE CASE'의 약자입니다.
SELECT AO.ANIMAL_ID, AO.ANIMAL_TYPE, AO.NAME
FROM ANIMAL_INS AI
INNER JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE REGEXP_LIKE(AI.SEX_UPON_INTAKE, 'INTACT MALE|INTACT FEMALE', 'i')
AND REGEXP_LIKE(AO.SEX_UPON_OUTCOME, 'SPAYED FEMALE|Neutered MALE', 'i')
ORDER BY AI.ANIMAL_ID
정규표현식을 바꿔서 할 수 있습니다.
^(SPAYED)를 활용함으로써 시작부분이 SPAYED인 문자열을 찾습니다.
만약 SPAYED로 끝나는경우를 찾을경우, (SPAYED)$ 로 사용합니다.
SELECT AO.ANIMAL_ID, AO.ANIMAL_TYPE, AO.NAME
FROM ANIMAL_INS AI
INNER JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE REGEXP_LIKE(AI.SEX_UPON_INTAKE, '^INTACT', 'i')
AND REGEXP_LIKE(AO.SEX_UPON_OUTCOME, '^(SPAYED|NEUTERED)', 'i')
ORDER BY AI.ANIMAL_ID