[TIL] WEEK 2 THUR (find_in_set)
MySQL :: MySQL 5.7 Reference Manual :: 12.8 String Functions and Operators
12.8 String Functions and Operators Table 12.12 String Functions and Operators Name Description ASCII() Return numeric value of left-most character BIN() Return a string containing binary representation of a number BIT_LENGTH() Return length of argument
dev.mysql.com
찾고싶은 문자(str)을 strlist에서 확인하고, 해당 문자의 위치를 가져오는 함수이다. 매칭되는 것이 있을 경우 그 값이 있는 번호를 가져오고 없으면 0을 가져온다.(strlist 가 빈문자열이어도 0 리턴) 하지만 str로 여러 문자를 사용할 수 없어서 각 각 코드를 써야하기 때문에 찾을 문자가 적을때 사용하면 좋을 것이다.
select *
from car_rental_company_car
where find_in_set('네비게이션', options) != 0
order by car_id desc
따라서 이 식에서는 '네비게이션'이라는 문자열을 options라는 리스트에서 확인하고, 그 값이 0이 아닌 값만 가져오라는 의미로 사용되었다. 즉, 값이 0이라면 해당 문자열에 '네비게이션'이 포함되어있지 않았다는 뜻이므로 !=을 써서 제외시켰다.
위 문제는 programmers의 특정 옵션이 포함된 자동차 리스트 구하기에서 풀 수 있다.
2. IF 중첩
IF 조건에 해당하지 않을때 IF를 다시 수행하게 하여 조건을 이어주었다.
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
IF(STATUS='SALE','판매중',IF(STATUS='RESERVED','예약중','거래완료')) '거래상태'
FROM USED_GOODS_BOARD
WHERE DATE_FORMAT(CREATED_DATE,'%Y%m%d') = 20221005
ORDER BY BOARD_ID DESC
위 문제는 programmers의 조건에 부합하는 중고거래 상태 조회하기에서 풀 수 있다.
파이썬도 어제 푼 문제를 다른 방식으로 풀며 복습하였다.