-- 코드를 입력하세요
SELECT i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME
FROM ANIMAL_INS i
JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE i.SEX_UPON_INTAKE IN ('Intact Male', 'Intact Female') AND o.SEX_UPON_OUTCOME IN ('Spayed Male', 'Neutered Male','Spayed Female', 'Neutered Female')
ORDER BY i.ANIMAL_ID
SQL
복사
이렇게 하드코딩 식으로 하는 것이 아닌 정규 표현식 혹은 공백 기준 분리로 알아볼 수 있었을 것 같다.
1.
문자열 처리 함수 - 공백 기준 분리 (공백이 아닌 특정 문자열도 가능)
SUBSTRING_INDEX(string, delimiter, count)
string 검색할 문자열
delimiter 사용할 구분 기호
count : 구분 기호를 검색할 위치(인덱스)
SELECT i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME
FROM ANIMAL_INS i
JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE SUBSTRING_INDEX(i.SEX_UPON_INTAKE, ' ', 1) = 'Intact' AND SUBSTRING_INDEX(o.SEX_UPON_OUTCOME, ' ', 1) IN ('Spayed', 'Neutered')
ORDER BY i.ANIMAL_ID
SQL
복사
2.
정규 표현식
SELECT i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME
FROM ANIMAL_INS i
JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE i.SEX_UPON_INTAKE REGEXP '^Intact' AND o.SEX_UPON_OUTCOME REGEXP '^(Spayed|Neutered)'
ORDER BY i.ANIMAL_ID;
SQL
복사
SELECT i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME
FROM ANIMAL_INS i
JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE REGEXP_SUBSTR(i.SEX_UPON_INTAKE, '^[^ ]+') = 'Intact'
AND REGEXP_SUBSTR(o.SEX_UPON_OUTCOME, '^[^ ]+') IN ('Spayed', 'Neutered')
ORDER BY i.ANIMAL_ID;
SQL
복사
REGEXP_SUBSTR 함수를 사용하여 정규표현식 '^[^ ]+'를 적용합니다. 이 정규표현식은 문자열에서 공백 이전까지의 부분 문자열을 추출합니다