DB. MySQL 3 숫자, 문자 관련 함수
숫자 관련 함수들
1. ROUND, CEIL, FLOOR
함수 | 설명 |
---|---|
ROUND | 반올림 |
CEIL | 올림 |
FLOOR | 내림 |
ex1)
SELECT
ROUND(0.5),
CEIL(0.4),
FLOOR(0.6);
ex2) 테이블 적용
SELECT
Price,
ROUND(price),
CEIL(price),
FLOOR(price)
FROM Products;
2. ABS
함수 | 설명 |
---|---|
ABS | 절대값 |
ex1)
SELECT ABS(1), ABS(-1), ABS(3 -10);
ex2) 테이블 적용
SELECT * FROM OrderDetails
WHERE ABS(Quantity - 10)<5;
Quantity의 값에서 -10을 한 수가 절대값으로 나오기 때문에 Quantity가 1이라고 했을때 -10을 하면 -9가 아닌 9가 되기 때문에 5보다 작다라는 조건에 맞지 않는다.
3. GREATEST, LEAST
함수 | 설명 |
---|---|
GREATEST | (괄호 안에서) 가장 큰 값 |
LEAST | (괄호 안에서) 가장 작은 값 |
ex1)
SELECT GREATEST(1,2,3), LEAST(1,2,3,4,5);
괄호안의 최대값과, 최소값이 나옴
ex2) 테이블 적용
SELECT OrderDetailID, ProductID, Quantity,
GREATEST(OrderDetailID, ProductID, Quantity),
LEAST(OrderDetailID, ProductID, Quantity)
FROM OrderDetails;
OrderDetailID, ProductID, Quantity 중 최대값과 최소값을 보여줌
4. MAX, MIN, COUNT, SUM, AVG
함수 | 설명 |
---|---|
MAX | 가장 큰 값 |
MIN | 가장 작은 값 |
COUNT | 갯수 (NULL값 제외) |
SUM | 총합 |
AVG | 평균 값 |
ex1) 테이블 적용
SELECT
MAX(Quantity),
MIN(Quantity),
COUNT(Quantity),
SUM(Quantity),
AVG(Quantity)
FROM OrderDetails
WHERE OrderDetailID;
Quauntity 컬럼에서 최대값과 최소값, 데이터 갯수, 데이터들의 총 합, 평균을 보여줌
5. POW, POWER, SQRT
함수 | 설명 |
---|---|
POW(A,B), POWER(A,B) | A를 B만큼 제곱 |
SQRT | 제곱근(square root) |
ex1)
SELECT
POW(2, 3),
POWER(5, 2),
SQRT(16);
각 각 2의 3승, 5의 2승, 16의 제곱근을 보여준다.
ex1-1)
SELECT
SQRT(16),
POWER(16, 1/2);
16의 제곱근은, 16의 1/2 승과 같다.
ex2) 테이블 적용
SELECT Price, SQRT(Price), POW(Price, 1/2)
FROM Products
WHERE SQRT(Price) < 4;
Price값에서 제곱근을 구한 값과, 2/1승을 한 값 중 4보다 작은 값에 해당하는 데이터를 보여줌
6. TRUNCATE
함수 | 설명 |
---|---|
TRUNCATE(N,n) | N을 소수점 n자리까지 선택 |
ex1)
SELECT
TRUNCATE(1234.5678, 1),
TRUNCATE(1234.5678, 2),
TRUNCATE(1234.5678, 3);
소수점의 자릿수를 표시한다.
ex1-1) '-' 일때
SELECT
TRUNCATE(1234.5678, -1),
TRUNCATE(1234.5678, -2),
TRUNCATE(1234.5678, -3);
소수점 위로 자릿수 만큼 0으로 바뀐다.
ex2) 테이블 적용
SELECT Price FROM Products
WHERE Price = 12;
Price = 12 를 했을때 12에 해당하는 데이터만 나오는걸 알 수 있다. 여기서 TRUNCATE를 적용하면,
ex2-1) TRUNCATE 적용
SELECT Price FROM Products
WHERE TRUNCATE(Price,0) = 12;
Price의 소수점 0번째 까지 즉 소수점 앞의 숫자가 12와 같은지를 비교해서 조건에 맞는 데이터를 보여준다.
문자열 관련 함수들
1. UPPER, LOWER
함수 | 설명 |
---|---|
UCASE, UPPER | 모두 대문자로 |
LCASE, LOWER | 모두 소문자로 |
ex1)
SELECT
UPPER('abcDEF'),
LOWER('abcDEF'),
UCASE('abcDEF'),
LCASE('abcDEF');
ex2) 테이블 적용
SELECT
UCASE(CustomerName),
LCASE(CustomerName)
FROM Customers;
2. CONCAT
함수 | 설명 |
---|---|
CONCAT(...) | 괄호 안의 내용 이어붙임 |
CONCAT_WS(S, ...) | 괄호 안의 내용 S로 이어붙임 |
ex1) CONCAT
SELECT CONCAT('HELLO', ' ', 'THIS IS', 2021)
HELLO 뒤에 빈 문자열을 넣고 THIS IS뒤에 는 공백이 없어서 2021과 붙어서 나왔다.
ex1-1) CONCAT_WS
SELECT CONCAT_WS('-', 2021, 11, 10, 'PM')
각 문자들 사이에 제일 앞에 '-'를 집어넣어서 붙여준다.
ex1) CONCAT 테이블 적용
SELECT CONCAT('O-ID: ', OrderID) FROM Orders;
'O-ID: ' 라는 문자열 뒤에 OrderID를 붙여서 보여줌
ex2) CONCAT_WS 테이블 적용
SELECT CONCAT_WS(' ', FirstName, LastName) AS FullName
FROM Employees;
Employees 테이블의 FistName과 LastName을 중간에 공백을 넣고 합쳐서 칼럼명을 FullName으로 보여준다.
3. SUBSTR, LEFT, RIGHT
함수 | 설명 |
---|---|
SUBSTR, SUBSTRING | 주어진 값에 따라 문자열을 자름 |
LEFT | 왼쪽부터 N글자 |
RIGHT | 오른쪽부터 N글자 |
ex1) SUBSTR
SELECT
SUBSTR('ABCDEFG', 3),
SUBSTR('ABCDEFG', 3, 2),
SUBSTR('ABCDEFG', -3),
SUBSTR('ABCDEFG', -3, 2);
각 각
-
처음(왼쪽)부터 3번째에 있는 글자를 시작으로 마지막(오른쪽) 까지 읽어옴
-
3번째 글자부터 2글자만 읽어옴
-
마지막에서 부터 3번째에 있는 글자를 시작으로 마지막까지 읽어옴
-
마지막부터 3번째의 있는 글자를 시작으로 2글자만 읽어옴
ex2) LEFT, RIGHT
SELECT
LEFT('ABCDEFG', 3),
RIGHT('ABCDEFG', 3);
-
왼쪽에서 부터 3글자를 읽어옴
-
오른쪽에서 부터 3글자를 읽어옴
ex3) 테이블 적용
SELECT OrderDate
FROM Orders;
위의 데이터에서 년, 월, 일을 빼와서 나누어 본다.
ex3-1) 테이블 적용
SELECT OrderDate,
LEFT(OrderDate, 4) AS Year,
SUBSTR(OrderDate, 6, 2) AS Month,
RIGHT(OrderDate, 2) AS Day
FROM Orders;
-
OrderDate의 왼쪽에서 부터 4글자를 읽어와서 Year로 보여줌
-
OrderDate의 6번째 글자에서 부터 2글자를 읽어서 Month를 보여줌
-
OrderDate의 오른쪽에서 부터 2글자를 읽어서 Day를 보여줌
4. LENGTH
함수 | 설명 |
---|---|
LENGTH | 문자열의 크기(바이트 길이) |
CHAT_LENGTH, CHARACTER_LENGTH | 문자열의 문자 길이 |
ex1) 영어
SELECT
LENGTH('ABCDE'),
CHAR_LENGTH('ABCDE'),
CHARACTER_LENGTH('ABCDE');
LENGTH 영어는 한 문자당 1바이트이기 때문에 5가 나왔고 나머지는 문자열의 길이를 나타낸다.
ex1-1) 한글
SELECT
LENGTH('안녕하세요'),
CHAR_LENGTH('안녕하세요'),
CHARACTER_LENGTH('안녕하세요');
한글은 한 문자당 3바이트이기 때문에 LENGTH는 15가 나오고 문자열의 길이는 5가 나왔다.
5. TRIM
함수 | 설명 |
---|---|
TRIM | 양쪽 공백 제거 |
LTRIM | 왼쪽 공백 제거 |
RTRIM | 오른쪽 공백 제거 |
ex1)
SELECT
CONCAT('|', ' HELLO ', '|'),
CONCAT('|', LTRIM(' HELLO '), '|'),
CONCAT('|', RTRIM(' HELLO '), '|'),
CONCAT('|', TRIM(' HELLO '), '|');
-
LTRIM으로 왼쪽 공백만 지운 결과
-
RTRIM으로 오른쪽 공백만 지운 결과
-
TRIM으로 양쪽 공백을 지운 결과
ex2) 테이블 적용
SELECT * FROM Categories
WHERE CategoryName = ' Beverages '
공백이 들어가서 아무 데이터도 나오지 않음
ex2-1) TRIM 적용
SELECT * FROM Categories
WHERE CategoryName = TRIM(' Beverages ')
양쪽 공백을 지우고 Berverages에 해당하는 데이터가 나옴
6. PAD
함수 | 설명 |
---|---|
LPAD(S, N, P) | S가 N글자가 될 때까지 P를 왼쪽에 이어붙임 |
RPAC(S, N, P) | S가 N글자가 될 때까지 P를 오른쪽에 이어붙임 |
ex1)
SELECT
LPAD('ABC', 5, '-'),
RPAD('ABC', 5, '-');
-
ABC가 5글자가 될때 까지 -를 왼쪽에 붙인 결과
-
ABC가 5글자가 될때 까지 -를 오른쪽에 붙인 결과
ex2) 테이블 적용
SELECT SupplierID, Price FROM Products;
SupplierID, Price에 PAD를 적용 시키면
ex2-1)
SELECT
LPAD(SupplierID, 5, 0),
RPAD(Price, 6, 0)
FROM Products;
-
왼쪽에 0을 넣어 5글자로 만든 결과
-
오른쪽에 0을 넣어 6글자로 만든 결과
7. REPLACE
함수 | 설명 |
---|---|
REPLACE(S, A, B) | S중 A를 B로 변경 |
ex1)
SELECT
REPLACE('맥도날드에서 맥도날드 햄버거를 먹었다.', '맥도날드', '버거킹');
맥도날드 -> 버거킹으로 교체
ex2) 테이블 적용
SELECT
Description
FROM Categories;
Description에 REPLACE를 적용하면
ex2-1) REPLACE 적용
SELECT
REPLACE(Description, ', ', ' and ')
FROM Categories;
Description에 있는 ', '이 모두 ' and '로 교체 되었다.
ex2-2) REPLACE 적용2
SELECT Description,
REPLACE(Description, ', and', ','),
REPLACE(REPLACE(Description, ', and', ','), ',', ' and')
FROM Categories;
기존에 있던 'and'와 겹치는 상황이 발생하므로 기존의 ', and'를 ','로 바꾼다음, ',' -> 'and'로 바꾸어 준 결과
8. INSTR
함수 | 설명 |
---|---|
INSTR(S, s) | S중의 s의 첫 위치 반환, 없을 시 0 |
ex1)
SELECT
INSTR('ABCDE', 'ABC'),
INSTR('ABCDE', 'BCDE'),
INSTR('ABCDE', 'C'),
INSTR('ABCDE', 'DB'),
INSTR('ABCDE', 'F');
앞의 문자열에서 뒤에 해당하는 문자열의 위치를 반환한다.
-
'ABC'에서 A가 해당하는 부분이 'ABCDE'의 첫번째 위치에 있으므로 1을 반환
-
'BCDE'에서 B에 해당하는 부분이 'ABCDE'의 두번째 위치에 있으므로 2를 반환
-
'C'는 'ABCDE'의 세번째 위치에 있으므로 3을 반환
-
'DB'는 해당 문자열이 없으므로 0을 반환
-
'F'는 해당 문자열이 없으므로 0을 반환
ex2) 테이블 적용
SELECT CustomerName FROM Customers;
CustomerName에 INSTR을 적용하면
ex2-1) INSTR 적용
SELECT CustomerName FROM Customers
WHERE INSTR(CustomerName, ' ') BETWEEN 1 AND 6;
CustomerName에서 공백의 위치와 BETWEEN 1 AND 6을 통해 1~6 까지와 비교하여 해당하는 값을 보여준다.
원하는 이름 글자수의 데이터를 불러 올 수 있다.
Author And Source
이 문제에 관하여(DB. MySQL 3 숫자, 문자 관련 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinzza456/DB.-MySQL-3-숫자-문자-관련-함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)