숫자 관련 함수들
함수 | 설명 |
ROUND | 반올림 |
CEIL | 올림 |
FLOOR | 내림 |
함수 | 설명 |
ABS | 절대값 |
함수 | 설명 |
GREATEST | (괄호 안에서) 가장 큰 값 |
LEAST | (괄호 안에서) 가장 작은 값 |
그룹 함수 - 조건에 따라 집계된 값을 가져온다.
함수 | 설명 |
MAX | 가장 큰 값 |
MIN | 가장 작은 값 |
COUNT | 갯수 (NULL값 제외) |
SUM | 총합 |
AVG | 평균 값 |
SELECT
MAX(Quantity),
MIN(Quantity),
COUNT(Quantity),
SUM(Quantity),
AVG(Quantity)
FROM OrderDetails
WHERE OrderDetailID BETWEEN 20 AND 30;
함수 | 설명 |
POW(A, B), POWER(A, B) | A를 B만큼 제곱 |
SQRT | 제곱근 |
함수 | 설명 |
TRUNCATE(N, n) | N을 소숫점 n자리까지 선택 |
SELECT
TRUNCATE(1234.5678, 1), -- 1234.5
TRUNCATE(1234.5678, 2), -- 1234.56
TRUNCATE(1234.5678, 3), -- 1234.567
TRUNCATE(1234.5678, -1), -- 1230
TRUNCATE(1234.5678, -2), -- 1200
TRUNCATE(1234.5678, -3); -- 1000
-- Price가 12.50, 12.00, 12.75 등이 선택된다.
SELECT Price FROM Products
WHERE TRUNCATE(Price, 0) = 12;
문자열 관련 함수들
함수 | 설명 |
UCASE, UPPER | 모두 대문자로 |
LCASE, LOWER | 모두 소문자로 |
함수 | 설명 |
CONCAT(...) | 괄호 안의 내용 이어붙임 |
CONCAT_WS(S, ...) | 괄호 안의 내용 S로 이어붙임 |
-- HELLO THIS IS 2021
SELECT CONCAT('HELLO', ' ', 'THIS IS ', 2021)
-- 2021-8-15-AM
SELECT CONCAT_WS('-', 2021, 8, 15, 'AM')
-- 'O-ID : '를 붙여서 추출
SELECT CONCAT('O-ID: ', OrderID) FROM Orders;
-- FirstName과 LastName을 FullName으로 공백으로 합쳐서 추출
SELECT
CONCAT_WS(' ', FirstName, LastName) AS FullName
FROM Employees;
함수 | 설명 |
SUBSTR, SUBSTRING | 주어진 값에 따라 문자열 자름 |
LEFT | 왼쪽부터 N글자 |
RIGHT | 오른쪽부터 N글자 |
SELECT
SUBSTR('ABCDEFG', 3), -- CDEFG, 3번째부터 읽어온다.
SUBSTR('ABCDEFG', 3, 2), -- CD, 3번째부터 2개 읽어온다.
SUBSTR('ABCDEFG', -4), -- DEFG, 맨 뒤에서 4번째부터 읽어온다.
SUBSTR('ABCDEFG', -4, 2); -- DE, 맨 뒤에서 4번째부터 2개 읽어온다.
SELECT
LEFT('ABCDEFG', 3), -- ABC
RIGHT('ABCDEFG', 3); -- EFG
-- 주문 날짜를 년, 월, 일로 분리하여 추출
SELECT
OrderDate,
LEFT(OrderDate, 4) AS Year,
SUBSTR(OrderDate, 6, 2) AS Month,
RIGHT(OrderDate, 2) AS Day
FROM Orders;
함수 | 설명 |
LENGTH | 문자열의 바이트 길이 |
CHAR_LENGTH, CHARACTER_LEGNTH | 문자열의 문자 길이 |
SELECT
LENGTH('ABCDE'), -- 5
CHAR_LENGTH('ABCDE'), -- 5
CHARACTER_LENGTH('ABCDE'); -- 5
-- MySQL에서 한글 추출할 때 일반적으로 CHARACTER_LENGTH를 사용한다.
SELECT
LENGTH('안녕하세요'), -- 15
CHAR_LENGTH('안녕하세요'), -- 5
CHARACTER_LENGTH('안녕하세요');-- 5
함수 | 설명 |
TRIM | 양쪽 공백 제거 |
LTRIM | 왼쪽 공백 제거 |
RTRIM | 오른쪽 공백 제거 |
SELECT
CONCAT('|', ' HELLO ', '|'), -- | HELLO |
CONCAT('|', LTRIM(' HELLO '), '|'), -- |HELLO |
CONCAT('|', RTRIM(' HELLO '), '|'), -- | HELLO|
CONCAT('|', TRIM(' HELLO '), '|'); -- |HELLO|
-- 검색하는 사용자가 양 끝에 공백을 실수로 입력하여 검색이 안되는 경우를 방지할 때 사용할 수 있다.
SELECT * FROM Categories
WHERE CategoryName = TRIM(' Beverages ')
함수 | 설명 |
LPAD(S, N, P) | S가 N글자가 될 때까지 P를 이어붙임 |
RPAD(S, N, P) | S가 N글자가 될 때까지 P를 이어붙임 |
SELECT
LPAD('ABC', 5, '-'), -- --ABC
RPAD('ABC', 5, '-'); -- ABC--
-- 숫자가 1, 10, 100이든 앞이나 뒤에 0을 붙여 자리를 똑같이 만들어준다.
SELECT
LPAD(SupplierID, 5, 0),
RPAD(Price, 6, 0)
FROM Products;
함수 | 설명 |
REPLACE(S, A, B) | S중 A를 B로 변경 |
-- 버거킹에서 버거킹 햄버거를 먹었다.
SELECT
REPLACE('맥도날드에서 맥도날드 햄버거를 먹었다.', '맥도날드', '버거킹');
-- 쉼표를 and로 교체
SELECT
REPLACE(REPLACE(Description, ', and', ','), ',', ' and')
FROM Categories;
함수 | 설명 |
INSTR(S, s) | S중 s의 첫 위치 반환, 없을 시 0 |
SELECT
INSTR('ABCDE', 'ABC'), -- 1
INSTR('ABCDE', 'BCDE'), -- 2
INSTR('ABCDE', 'C'), -- 3
INSTR('ABCDE', 'DE'), -- 4
INSTR('ABCDE', 'F'); -- 0
-- 1과 6사이에 스페이스바가 들어간다는 것은 앞 글자가 6보다 짧은 것을 추출하려고 할 때 사용할 수 있다.
SELECT * FROM Customers
WHERE INSTR(CustomerName, ' ') BETWEEN 1 AND 6;
-- < 6으로 하면?
-- 스페이스바가 아예 없는 것도 6보다 작게 되므로 목적을 달성할 수 없다
함수 | 설명 |
CAST(A, T) | A를 T 자료형으로 변환 |
SELECT
'01' = '1', -- 문자열이라 서로 다르므로 FALSE
CONVERT('01', DECIMAL) = CONVERT('1', DECIMAL); -- 숫자로 변환하면 같은 1이므로 TRUE
'프로그래밍 강의 메모 > 갖고노는 MySQL 데이터베이스 by 얄코' 카테고리의 다른 글
SELECT 기초 > 조건에 따라 그룹으로 묶기 (0) | 2022.05.01 |
---|---|
SELECT 기초 > 시간/날짜 관련 및 기타 함수들 (0) | 2022.05.01 |
SELECT 기초 > 각종 연산자들 (0) | 2022.04.30 |
SELECT 기초 > 전반 기능 훑어보기 (0) | 2022.04.30 |
인트로 > 데이터베이스는 뭐고 MySQL은 뭔가요? (0) | 2022.04.29 |