스파르타/TIP

MYSQL 소소한 팁

DDG 2023. 11. 28. 15:36

 

  •  MYSQL에서는 ISNULL을 못쓴다
    • 코딩테스트 연습을 하는 와중에 책에서 배운 ISNULL을 쓰면 되는데 자꾸 오류가 나서
      구글에 검색해 보니 IFNULL을 써야 MYSQL에서 작동한다 

 

  • 날짜의 차이를 구하는 함수 : datediff()
    • select문에서 날짜 두개 써서 -로 하고 있으면 절대 안나온다
    • 현재의 시간을 구하는 함수 : now()  
      • datediff( now() , 뺴 줄 날짜) = 날짜의 차이를 구할 수 있다

 

  • IN과 REGEXP
    • IN은 다중연산자로 OR의 의미를 가지고 있다
      그래서  문제였던 '자동차 종류별 특정 옵션이 포함된 자동차 수 구하기'의 조건을 구하는 와중
      자꾸 빈 공백의 데이터만 출력이 되었다. 
      분명 내가 아는 것이 맞고 조건도 맞게 썼는데  왜 안 나오지?라는 생각만 가득이었다
      결국 질문하기 칸을 눌렀고 답을 알아냈다.  
      문제의 조건은 다음과 같다.  
    • CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해 주세요. 
      IN 연산자는 조건이 정확히 일치하는 것들을 반환한다. 즉 저 3개의 조건만 일치해야지 답이 나온다
      여러 가지 옵션 중 저 3개의 답만 있는 경우에만 나오는 것이라서 이럴 때에는 IN과 비슷하지만 더욱 

      엄청난 녀석을 써야 한다.

    • REGEXP라는 regular expression 정규 표현식이다.
      • IN보다 복잡한 조건으로 검색을 할 수 있다. 
      • 나도 오늘 배운 거라서 잘 모르기 때문에 구글에 쳐서 검색해 볼 것.