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개 이상 포함되어 있음을 의미한다. 없다면 정확히 일치하는 결과만 찾는다.
LIKE
의 excape
에는 _
도 있는데, 정확히 _
의 위치와 일치하는 1개만 포함 여부를 판단한다.
select '네비게이션' like '네비게이션_'; # 0
select '네비게이션1' like '네비게이션_'; # 1
_
의 위치에 문자가 없거나 2개 이상이라면 0
을 반환한다.
참고
문자열에 MySQL의 특정 데이터가 포함되어 있는지 확인
MySQL docs - INSTR
MySQL docs - LIKE