https://programmers.co.kr/learn/courses/30/lessons/59409?language=mysql
코딩테스트 연습 - 중성화 여부 파악하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL 문
( 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있음
이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시 )
MySQL
SELECT ANIMAL_ID, NAME,
IF( REGEXP_LIKE( SEX_UPON_INTAKE, 'Neutered|Spayed' ), 'O', 'X' ) 중성화
-- IF( SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%', 'O', 'X' ) 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
※ LIKE 여러 개 연산 시 -- IN( ) 안 됨 → REGEXP_LIKE( ) 사용
※ REGEXP_LIKE( )
REGEXP_LIKE( expr, pattern [, match_type] )
문자열( expr )이 패턴에 지정된 정규식( pattern )과 일치하면 1을 반환하고 그렇지 않으면 0을 반환
< pattern >
Special characters and Constructs | Description |
^ | 문자열의 시작 부분 |
$ | 문자열의 끝 |
. | 모든 문자 ( 캐리지 리턴 및 개행 포함, 문자열 중간에서 일치시키려면 m(여러 행) 일치 제어 문자 또는 (?m) 패턴 내 수정자를 제공해야 함 ) |
a * | 0 개 이상의 a 문자 시퀀스 |
a + | 1 개 이상의 a 문자 시퀀스 |
a ? | 0 개 또는 1 개의 a 문자 |
a | b | a 또는 b |
( abc ) * | 'abc' 시퀀스의 0개 이상의 인스턴스 ( 단일 하위 표현식으로 처리되는 그룹화 표현식 ) |
{ n } | n 개 |
{ n , } | n 개 이상 |
{ n , m } | n 개 이상, m 개 이하 |
{ , m } | m 개 이하 |
[ a - z ] | a 부터 z 까지의 문자 중 하나 ( 목록에 표시된 표현식 중 하나와 일치해야 하는 일치 목록을 지정하기 위한 대괄호 표현식 ) |
[ ^ a - z ] | a 부터 z 까지를 제외한 문자 중 하나 |
[ = char_class = ] | |
[ : char_class : ] |
https://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp-syntax
https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-like
< match_type >
* c : 대소문자 구분
* i : 대소문자 구분 안 함
Oracle DB
SELECT ANIMAL_ID, NAME,
CASE WHEN REGEXP_LIKE( SEX_UPON_INTAKE, 'Neutered|Spayed' )
-- CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%'
THEN 'O'
ELSE 'X'
END 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
※ 분기문 안에서 LIKE 연산 -- DECODE( ) 안 됨 → CASE 사용
※ LIKE 여러 개 연산 시 -- REGEXP_LIKE( ) 사용
※ REGEXP_LIKE( )
REGEXP_LIKE( source_string, search_pattern [, match_parameter] )
( MySQL 과 비슷 )
https://docs.oracle.com/database/121/SQLRF/ap_posix001.htm#SQLRF55540
'코딩 문제 풀기 ( Algorithm problem solving ) > 프로그래머스 ( Programmers )' 카테고리의 다른 글
[프로그래머스(Programmers)][SQL] String, Date (Lv3) 오랜 기간 보호한 동물 (2) (0) | 2022.01.07 |
---|---|
[프로그래머스(Programmers)][SQL] String, Date (Lv2) DATETIME에서 DATE로 형 변환 (0) | 2022.01.07 |
[프로그래머스(Programmers)][SQL] String, Date (Lv2) 이름에 el이 들어가는 동물 찾기 (0) | 2022.01.07 |
[프로그래머스(Programmers)][SQL] String, Date (Lv2) 루시와 엘라 찾기 (0) | 2022.01.07 |
[프로그래머스(Programmers)][SQL] SUM, MAX, MIN (Lv2) 중복 제거하기 (0) | 2022.01.06 |