어려운 문제는 아닌데, '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차
이 풀이를 나는 Like 를 사용해서
LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'
이렇게 나타냈는데, REGEXP를 활용하면 더 간결하게 나타낼 수 있다고 한다.
🤟 REGEXP
정규식을 이용한 검색을 하면 더 다양한 검색을 할 수 있다.. : 문자 하나를 나타낸다.
* : 앞에 나온 문자의 0개 이상 반복을 나타낸다.
^ : 문자열의 처음을 나타낸다.
$ : 문자열의 끝을 나타낸다.
[.] : 괄호 안의 문자열 일치를 확인한다.
{.} : 반복을 나타낸다.
| : or 를 나타낸다.
위 LIKE 문을 다음과 같이 바꿀 수 있음.select * from CAR_RENTAL_COMPANY_CAR where OPTIONS REGEXP '통풍시트|열선시트|가죽시트';
이는 OPTIONS 필드에 '통풍시트' 또는 '열선시트', 또는 '가죽시트'를 포함한 레코드를 모두 출력하라.임
어제 본 코테에서 '후기'컬럼의 첫 글자가 영어 알파벳으로 시작하는 경우만 SELECT 해라
라는 문제가 있었는데, 이것도 정규식을 이용하면 쉬울 것 같다.
💫 컬럼값이 영어로 시작하는 레코드만 추출해라.
SELECT * FROM test WHERE name REGEXP '^[A-Za-z]';
- 여기서 ^ 는 문자의 처음을 나타내고, [A-Za-z]는 문자열이 알파벳 대문자 또는 소문자인 경우를 나타내므로 문자의 처음이 알파벳으로 시작하는 애들만 고르는 정규식인것!
정규식을 몰랐던 난... 이렇게 써서 냈다.A-Z,a-z 일일이 다 써서 냈음 ㅎㅎ;;SELECT * FROM test WHERE SUBSTR(NAME, 1, 1) IN ('A', 'B', 'C', ...);
🌟 만약에! 한글로 시작하는 녀석들을 SELECT 하라~ 라고 하면?
한글은[가-힇]
으로 나타낸다. 따라서SELECT * FROM TEST WHERE NAME REGEXP '^[가-힇]';
이렇게 해주면 되겠찌? 재밌구만