SQL
SQL - 내장함수
길용쓰
2023. 2. 21. 19:22
IF문
SELECT IF(1>3, 'true', 'false'); -- IF(수식, 참, 거짓)
SELECT IFNULL(TLNO, "NONE") AS TLNO
날짜 관련
DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d')
날짜 값 양식 지정
Y=2022 y=22 대소문자 구분 필요
ORDER BY DATEDIFF(endtime, starttime) DESC
DATEDIFF 날짜 차이를 계산해주는 내장 함수
1일과 3일의 날짜 차이는 2일이지만, 1~3일은 총 3일이므로 DATEDIFF에 +1을 해줘야 할 때가 있다
계산 관련
ROUND(AVG(DAILY_FEE))
ROUND(AVG(REVIEW_SCORE),2) // 소수점 3번째 자리에서 반올림
ABS 절대값
ROUND 반올림
TRUNCATE 내림
CEILING 소수점 올림
FLOOR 소수점 내림
TRUNCATE(숫자, 0) = FLOOR(숫자)
ROUND와 TRUNCATE은 자릿수 지정이 가능하다
몫 계산의 경우 A DIV B 대신 FLOOR(A/B)를 쓰면 편하다
문자열 관련
SELECT CONCAT('2020', '01', '01') -> 20200101
SELECT CONCAT_WS('/','2020', '01', '01'); -> 2020/01/01
여러 문자열을 합친다
SELECT ASCII('A'); -> 65
SELECT CHAR(65); -> 'A'
SELECT ASCII('ABC'); -> 65
아스키코드
문자열을 넣으면 첫글자만 반환되므로 주의
SELECT LENGTH("ABC") => 3
SELECT LENGTH("이예일") => 9
SELECT CHAR_LENGTH("이예일") => 3
길이 반환
한글은 한 글자가 3으로 취급되므로 CHAR_LENGTH를 써야함
SELECT LEFT('가나다라마바', 3), -> 가나다
SELECT RIGHT('가나다라마바', 3); -> 라마바
좌/우측 N글자 반환
SELECT REPLACE ('It is banana', 'banana', 'apple');
문자열 값 찾아서 바꾸기
SELECT SUBSTRING(STR,5,3) -> 5,6,7
LIMIT 5,3 -> 6,7,8
문자열의 5번째 글자를 시작으로 총 3개의 문자 추출
LIMIT은 5번째 "이후" 개체부터 출력하니 주의
SELECT TRIM(" ABC ") -> "ABC"
문자열 앞뒤 공백 제거
SELECT "1"+"2" => 3
SELECT "A" => A
SELECT "A"+"2" => 2
SELECT "52A3"-"3A6" -> 49 (52-3)
문자열을 연산할때
숫자가 아닌 값을 만나면 그 뒤는 없는 걸로 처리됨