2 minute read

컬럼끼리 계산하기

컬럼끼리 기본적인 산술연산을 할 수 있다. (+, - , *, /, %)

SELECT age + height FROM school.member;

age와 height를 더한 값이 나온다.

Alias

컬럼의 이름을 alias로 대체할 수 있다.

컬럼 AS 바꿀이름
SELECT age + height AS b FROM school.member;

age + height의 이름이 b로 대체되어 나오게 된다.

AS를 생략하고 한칸을 띄우기만 해도 alias가 적용된다.

컬럼 바꿀이름
SELECT (age + height) b FROM school.member;

동일한 결과가 나오지만 항상 AS를 붙여 가독성을 높여주는 편이 좋다.

alias에 스페이스를 포함시키려면 따옴표를 붙여야 한다.
따옴표를 생략하면 스페이스를 기준으로 구문해석을 하는 SQL의 특성상 에러가 발생하게된다.
예시) AS ‘a b c’

CONCAT

CONCAT으로 여러 컬럼의 값을 하나의 값으로 나타낼 수 있다.

CONCAT(컬럼, 컬럼)
SELECT CONCAT(height, '---', age) AS aaa FROM school.member;

height와 문자열 ‘—’, age가 하나의 값으로 출력된다.
예시) 167.2—27
그리고 CONCAT은 보통 alias를 같이 해준다.

CASE

CASE는 특정 값을 원하는 방식으로 변환하여 표현하게 해준다.

단순 CASE()함수

CASE 컬럼
    WHEN 1 THEN 2
    WHEN 1 THEN 2
    ELSE 2
END

해당 컬럼과 값1이 같으면 값2를 리턴한다.

SELECT
(CASE age
	WHEN 29 THEN 'A'
    WHEN 30 THEN 'B'
    WHEN 31 THEN 'C'
    ELSE 'D'
END) AS ageabc
FROM school.member;

age가 29면 A, 30이면 B, 31이면 C가 나오고 그밖에는 D가 나오게 된다.
CASE문 바로 뒤에 컬럼 이름을 쓰고 그 컬럼의 값과 비교할 값이 같은지(=) 비교하는 함수를 단순CASE함수라고 한다.

검색 CASE()함수

CASE
    WHEN 조건 THEN 
    WHEN 조건 THEN 
    ELSE 
END

WHEN에서 True인 조건을 만나면 THEN의 값을 리턴한다.

SELECT
(CASE
	WHEN age >= 25 THEN 'A'
    ELSE 'B'
END) AS ageab
FROM school.member;

age가 25이상이면 A, 아니면 B를 리턴한다.

단순CASE()에서는 등호연산 밖에 할 수 없었지만 검색CASE()에서는 다양한 형태의 조건을 걸 수 있다.
그리고 alias도 같이 해주면 좋다.

IF

IF는 첫번째 인자로 조건식이 오고, 그 조건식이 True라면 두번째 인자, False라면 세번째 인자를 리턴한다.

IF(조건식, True, False)
SELECT IF(height >= 170, height, 'a') FROM school.member;

조건식이 True라면 height가 리턴되고, False라면 ‘a’가 리턴된다.

DISTINCT

DISTINCT()를 사용하면 고유값만 받을 수 가 있다.

DISTINCT(컬럼)
SELECT DISTINCT(age) FROM school.member;

SUBSTRING

SUBSTRING()으로 문자열의 일부를 추출할 수 있다.

SUBSTRING(컬럼, a, b)

해당 컬럼의 a번째 부터 b개의 문자를 추출한다.

SELECT SUBSTRING(address, 1, 2) FROM school.member;

address컬럼의 1번째 문자부터 2개의 문자를 추출한다.

DISTINCT 활용

SELECT DISTICNT(SUBSTRING(address, 1, 2)) FROM school.member;

컬럼의 특정 내용을 고유값으로 받을 수 있다.

SELECT COUNT(DISTICNT(SUBSTRING(address, 1, 2))) FROM school.member;

컬럼에 존재하는 고유값의 개수를 구할 수 있다.

LENGTH

LENGTH()는 문자열의 길이를 구해준다.

LENGTH(컬럼)
SELECT LENGTH(address) FROM school.member;

address의 길이를 보여준다.

UPPER, LOWER

문자열을 모두 대문자, 소문자로 바꿔 보여준다.

UPPER(컬럼)
LOWER(컬럼)
SELECT UPPER(email) FROM copang_main.member;
SELECT LOWER(email) FROM copang_main.member;

LPAD, RPAD

LPAD(Left Padding)는 문자열의 왼쪽을 특정 문자열로 채워준다.
RPAD(Right Padding)는 문자열의 오른쪽을 특정 문자열로 채워준다.

LPAD(컬럼, 자릿수, 문자)
RPAD(컬럼, 자릿수, 문자)
SELECT LPAD(age, 10, '0') FROM copang_main.member;
SELECT RPAD(age, 10, '0') FROM copang_main.member;

age컬럼의 값을 왼쪽에 문자’0’을 붙여서 총 10자리로 만든다.
어떤 숫자의 자릿수를 맞출때 사용하는 함수다.
예시) 0000000021, 0000000009

TRIM, LTRIM, RTRIM

LTRIM()은 왼쪽 공백삭제, RTRIM()은 오른쪽 공백삭제, TRIM()은 양쪽 공백삭제.

LTRIM(컬럼)
RTRIM(컬럼)
TRIM(컬럼)
SELECT LTRIM(age) FROM school.trim_test;
SELECT RTRIM(age) FROM school.trim_test;
SELECT TRIM(age) FROM school.trim_test;

age의 값이 “   19”같이 공백이 있으면 LTRIM으로 왼쪽의 공백을 삭제할 수 있다.

Tags:

Categories:

Updated:

Leave a comment