TIL

[TIL] WEEK 2 THUR (find_in_set)

ollive 2024. 7. 4. 22:53

1. FIND_IN_SET(str,strlist)

 

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

IF 중첩시 결과 (STATUS 컬럼에 대한 거래상태 컬럼의 결과)

위 문제는 programmers의 조건에 부합하는 중고거래 상태 조회하기에서 풀 수 있다.

 

파이썬도 어제 푼 문제를 다른 방식으로 풀며 복습하였다.

2024.07.04 - [Python] - [PYTHON] 프로그래머스 1 ~8번 풀이