목차


 데이터 형식 변환 함수

CAST

CAST(값 AS 데이터형식)
SELECT CAST(1234 AS CHAR(4))

CONVERT

CONVERT(값, 데이터형식)
SELECT CONVERT(1234, CHAR(4))

 

 제어 흐름 함수

IF(수식, 참일 경우 결과, 거짓일 경우 결과) : 수식이 참 또는 거짓에 따라 결과를 분기함

emp_no가 10001일 경우 이름, 그렇지 않을 경우 생일을 출력

SELECT
	emp_no
	, IF( emp_no = 10001 , first_name, birth_date )
FROM employees;

 

IFNULL(수식1, 수식2) : 수식이 NULL일 경우 수식2를, NULL이 아닐 경우 수식1을 반환함

공백은 NULL이 아니기때문에 수식1을 반환

SELECT IFNULL(' ', 'aa');

수식1이 NULL이기 때문에 수식2를 반환

 

SELECT IFNULL(null, 'aa');

 

NULLIF(수식1, 수식2) : 수식1과 2가 같으면 NULL을 반환하고, 다르면 수식1을 반환함

SELECT NULLIF(1 , 2);

SELECT NULLIF(1 , 1);

 

CASE ~ WHEN ~ ELSE ~ END : 다중 분기를 위해 사용함

CASE 체크하려는 수식1
    WHEN 분기수식1 THEN 결과1
    WHEN 분기수식2 THEN 결과2
    WHEN 분기수식3 THEN 결과3
    ELSE 결과4
END

SELECT
    emp_no
    , gender
    , CASE gender
        WHEN 'M' THEN '남자'
        ELSE '여자'
    END
FROM employees LIMIT 10;

 

 문자열 함수

CONCAT(문자열1, 문자열2, ...) : 문자열을 이어줌

SELECT CONCAT('안녕하세요.', ' ', '좋은아침입니다.');

 

CONCAT_WS(구분자, 문자열1, 문자열2, ...) : 문자열 사이에 구분자를 넣어 이어줌

SELECT CONCAT_WS(' / ', 'a', 'b', 'c');

 

FORMAT(숫자, 소숫점 자릿수) : 숫자에 ' , '를 넣어주고, 소숫점 자릿수까지 표현함 

SELECT FORMAT(123456, 2);

 

LEFT(문자열, 길이) : 문자열을 왼쪽부터 길이만큼 잘라 반환함

SELECT LEFT('abcdefg', 3);

 

RIGHT(문자열, 길이) : 문자열을 오른쪽부터 길이만큼 잘라 반환함

SELECT RIGHT('abcdefg', 3);

 

UPPER(문자열) : 소문자를 대문자로 변경함

SELECT UPPER('abcDEF');

 

LOWER(문자열) : 대문자를 소문자로 변경함

SELECT LOWER('abcDEF');

 

LPAD(문자열, 길이, 채울 문자열) : 문자열을 포함해 길이만큼 채울 문자열을 왼쪽에 넣음

SELECT LPAD('956', 6, '0');

 

RPAD(문자열, 길이, 채울 문자열) : 문자열을 포함해 길이만큼 채울 문자열을 오른쪽에 넣음

SELECT RPAD('956', 6, '0');

 

TRIM(문자열) : 좌우 공백을 제거함

SELECT TRIM('    a    bc   ');

 

LTRIM(문자열) : 왼쪽 공백을 제거함

SELECT LTRIM('    a    bc   ');

 

RTRIM(문자열) : 오른쪽 공백을 제거함

SELECT RTRIM('    a    bc   ');

 

TRIM(방향 문자열1 FROM 문자열2) : 방향을 지정해 문자열2에서 문자열1을 제거함

방향 : LEADING(좌), BOTH(좌우), TRAILING(우)

SELECT TRIM(BOTH 'abc' FROM 'abcdefabc');

 

SUBSTRING(문자열, 시작위치, 길이) : 문자열을 시작위치에서 길이만큼 잘라 반환함

SELECT SUBSTRING('abcdef', 2, 4);

 

SUBSTRING_INDEX(문자열, 구분자, 횟수) : 구분자가 횟수번째 나오면 그 이후부터 버림

SELECT SUBSTRING_INDEX('ab.cd.ef.gh', '.', 2);

 수학 함수

CEILING(숫자) : 올림함

SELECT CEILING(1.1);

 

FLOOR(숫자) : 내림함

SELECT FLOOR(1.9);

 

ROUND(숫자) : 반올림함 

SELECT ROUND(1.5);

 

TRUNCATE(숫자, 정수) : 소숫점 위치 기준으로 정수위치 까지 구하고 나머지는 버림

SELECT TRUNCATE(1.111111, 2);

 

 날짜 및 시간 함수

NOW() : 현재 날짜/시간을 구함

SELECT NOW();

SELECT DATE(NOW());

 

ADDDATE(날짜1, INTERVAL 날짜2) : 날짜1에서 날짜2를 더한 날짜를 구함

SELECT ADDDATE(NOW(), INTERVAL 1 DAY);

SELECT ADDDATE(NOW(), INTERVAL -1 DAY);

 

SUBDATE(날짜1, INTERVAL 날짜2) : 날짜1에서 날짜2를 뺀 날짜를 구함

SELECT SUBDATE(NOW(), INTERVAL 1 DAY);

 

ADDTIME(날짜/시간, 시간) : 날짜/시간에서 시간을 더한 날짜를 구함

SELECT ADDTIME(NOW(), '1:1:1');

SELECT ADDTIME(NOW(), '-1:-1:-1');

 

SUBTIME(날짜/시간, 시간) : 날짜/시간에서 시간을 뺀 날짜를 구함

SELECT SUBTIME(NOW(), '1:1:1');

 

 순위 함수

RANK() OVER(ORDER BY 속성명 ASC/DESC) : 순위를 매김

SELECT 
    emp_no
    , RANK() OVER(ORDER BY salary ASC) r
    , salary
FROM salaries;

 

ROW_NUMBER() OVER(ORDER BY 속성명 ASC/DESC) : 레코드에 순위를 매김, 동일한 값이라도 고유한 순위를 매김

SELECT
    emp_no
    , ROW_NUMBER() OVER(ORDER BY salary ASC) r
    , salary
FROM salaries;

 

Github

Link

 

'HeidiSQL > SQL_ex' 카테고리의 다른 글

table  (0) 2023.03.19
JOIN  (0) 2023.03.19
data type  (0) 2023.03.18
DELETE  (0) 2023.03.18
UPDATE  (0) 2023.03.18

+ Recent posts