[MySQL] 프로그래머스 Lv1 - 특정 옵션이 포함된 자동차 리스트 구하기

찐새·2023년 5월 22일
0

코딩테스트

목록 보기
50/53
post-thumbnail

특정 옵션이 포함된 자동차 리스트 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/157343

코드


// INSTR(컬럼, 문자열)
SELECT * from CAR_RENTAL_COMPANY_CAR where INSTR(OPTIONS , '네비게이션') > 0 order by CAR_ID desc;

// LOCATE(문자열, 컬럼)
SELECT * from CAR_RENTAL_COMPANY_CAR where LOCATE('네비게이션', OPTIONS) > 0 order by CAR_ID desc;

// LIKE
SELECT * from CAR_RENTAL_COMPANY_CAR where OPTIONS LIKE '%네비게이션%' order by CAR_ID desc;

풀이

컬럼의 문자열에 특정 문자열이 있는지 확인할 때는 INSTR(컬럼, 문자열)을 사용한다. 특정 문자열이 시작하는 인덱스를 반환한다. LOCATE(문자열, 컬럼)도 같다.

LIKE도 문자열이 포함되어 있는지 확인하지만, escape 여부로 반환 결과가 달라진다. 여기서 사용한 %는 특정 문자열 앞뒤로 다른 문자가 0개 이상 포함되어 있음을 의미한다. 없다면 정확히 일치하는 결과만 찾는다.

LIKEexcape에는 _도 있는데, 정확히 _의 위치와 일치하는 1개만 포함 여부를 판단한다.

select '네비게이션' like '네비게이션_'; # 0
select '네비게이션1' like '네비게이션_'; # 1

_의 위치에 문자가 없거나 2개 이상이라면 0을 반환한다.


참고
문자열에 MySQL의 특정 데이터가 포함되어 있는지 확인
MySQL docs - INSTR
MySQL docs - LIKE

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글