코딩테스트 연습을 하는 와중에 책에서 배운 ISNULL을 쓰면 되는데 자꾸 오류가 나서 구글에 검색해 보니IFNULL을 써야 MYSQL에서 작동한다
날짜의 차이를 구하는 함수 : datediff()
select문에서 날짜 두개 써서 -로 하고 있으면 절대 안나온다
현재의 시간을 구하는 함수 : now()
datediff( now() , 뺴 줄 날짜) = 날짜의 차이를 구할 수 있다
IN과 REGEXP
IN은 다중연산자로 OR의 의미를 가지고 있다 그래서 문제였던 '자동차 종류별 특정 옵션이 포함된 자동차 수 구하기'의 조건을 구하는 와중 자꾸 빈 공백의 데이터만 출력이 되었다. 분명 내가 아는 것이 맞고 조건도 맞게 썼는데 왜 안 나오지?라는 생각만 가득이었다 결국 질문하기 칸을 눌렀고 답을 알아냈다. 문제의 조건은 다음과 같다.
CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해 주세요. IN 연산자는 조건이 정확히 일치하는 것들을 반환한다. 즉 저 3개의 조건만 일치해야지 답이 나온다 여러 가지 옵션 중 저 3개의 답만 있는 경우에만 나오는 것이라서 이럴 때에는 IN과 비슷하지만 더욱 엄청난 녀석을 써야 한다.