일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- node.js
- Interceptor
- nestjs
- typescript
- Deep Dive
- TIL
- LifeCycle
- OOP
- 인접행렬
- Linux
- css
- MySQL
- GraphQL
- Kubernetes
- JWT
- Spring
- html
- bean
- 코딩테스트
- 탐욕법
- java
- 프로그래머스
- javascript
- 자료구조
- REST API
- puppeteer
- 인접리스트
- 알고리즘
- dfs
- winston
- Today
- Total
처음부터 차근차근
숫자와 문자열을 다루는 함수들 본문
1. 숫자 관련 함수들
ROUND | 반올림 |
CEIL | 올림 |
FLOOR | 내림 |
SELECT
ROUND(0.5), // 1
CEIL(0.4), // 1
FLOOR(0.6); // 0
SELECT
Price,
ROUND(price),
CEIL(price),
FLOOR(price)
FROM Products;
ABS | 절대값 |
SELECT ABS(1), ABS(-1), ABS(3 - 10); // 1, 1, 7
SELECT * FROM OrderDetails
WHERE ABS(Quantity - 10) < 5; // 6~14까지의 숫자를 나타내줘
GREATEST | (괄호 안에서) 가장 큰 값 |
LEAST | (괄호 안에서) 가장 작은 값 |
SELECT
GREATEST(1, 2, 3), // 3
LEAST(1, 2, 3, 4, 5); // 1
그룹 함수 - 조건에 따라 집계된 값을 가져온다.
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 | 제곱근 |
SELECT
POW(2, 3),
POWER(5, 2),
SQRT(16);
SELECT Price, POW(Price, 1/2)
FROM Products
WHERE SQRT(Price) < 4;
TRUNCATE(N, n) | N을 소숫점 n자리까지 선택 |
SELECT
TRUNCATE(1234.5678, 1),
TRUNCATE(1234.5678, 2),
TRUNCATE(1234.5678, 3),
TRUNCATE(1234.5678, -1),
TRUNCATE(1234.5678, -2),
TRUNCATE(1234.5678, -3);
SELECT Price FROM Products
WHERE TRUNCATE(Price, 0) = 12;
2. 문자열 관련 함수들
UCASE, UPPER | 모두 대문자로 |
LCASE, LOWER | 모두 소문자로 |
SELECT
UPPER('abcDEF'), // ABCDEF
LOWER('abcDEF'); // abcdef
CONCAT(...) | 괄호 안의 내용 이어붙임 |
CONCAT_WS(S, ...) | 괄호 안의 내용 S로 이어붙임 |
SELECT CONCAT('HELLO', ' ', 'THIS IS ', 2021) // HELLO THIS IS 2021
SELECT CONCAT_WS('-', 2021, 8, 15, 'AM') // 2021-8-15-AM
SELECT CONCAT('O-ID: ', OrderID) FROM Orders;
SELECT
CONCAT_WS(' ', FirstName, LastName) AS FullName
FROM Employees;
SUBSTR, SUBSTRING | 주어진 값에 따라 문자열 자름 |
LEFT | 왼쪽부터 N글자 |
RIGHT | 오른쪽부터 N글자 |
※ MySQL의 경우, index 시작이 1부터 시작된다.
SELECT
SUBSTR('ABCDEFG', 3),
SUBSTR('ABCDEFG', 3, 2),
SUBSTR('ABCDEFG', -4),
SUBSTR('ABCDEFG', -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
-- w3wchool 사이트에서는 한글이 제대로 동작하지 않습니다.
SELECT
LENGTH('안녕하세요'), -- 15
CHAR_LENGTH('안녕하세요'), -- 5
CHARACTER_LENGTH('안녕하세요'); -- 5
TRIM | 양쪽 공백 제거 |
LTRIM | 왼쪽 공백 제거 |
RTRIM | 오른쪽 공백 제거 |
SELECT
CONCAT('|', ' HELLO ', '|'),
CONCAT('|', LTRIM(' HELLO '), '|'),
CONCAT('|', RTRIM(' HELLO '), '|'),
CONCAT('|', TRIM(' HELLO '), '|');
SELECT * FROM Categories
WHERE CategoryName = ' Beverages '
>> 이렇게 하면 Beverages를 못찾는다.
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--'
SELECT
LPAD(SupplierID, 5, 0),
RPAD(Price, 6, 0)
FROM Products;
REPLACE(S, A, B) | S중 A를 B로 변경 |
SELECT
REPLACE('맥도날드에서 맥도날드 햄버거를 먹었다.', '맥도날드', '버거킹');
-> 버거킹에서 버거킹 햄버거를 먹었다.
SELECT
REPLACE(Description, ', ', ' and ')
FROM Categories;
SELECT
REPLACE(Description, ', ', ' and ')
FROM Categories;
INSTR(S, s) | S중 s의 첫 위치 반환, 없을 시 0 |
SELECT
INSTR('ABCDE', 'ABC'),
INSTR('ABCDE', 'BCDE'),
INSTR('ABCDE', 'C'),
INSTR('ABCDE', 'DE'),
INSTR('ABCDE', 'F');
SELECT * FROM Customers
WHERE INSTR(CustomerName, ' ') BETWEEN 1 AND 6;
-- < 6으로 하면?
-> 띄어쓰기 없는 값도 나온다.
CAST(A AS T) | A를 T 자료형으로 변환 |
CONVERT(A, T) | A를 T 자료형으로 변환 |
SELECT
'01' = '1',
CAST('01' AS DECIMAL) = CAST('1' AS DECIMAL);
SELECT
'01' = '1',
CONVERT('01', DECIMAL) = CONVERT('1', DECIMAL);
'DB > MySQL' 카테고리의 다른 글
MySQL 쿼리 안에 서브쿼리 (0) | 2023.06.01 |
---|---|
MySQL 조건에 따라 그룹으로 묶기 (0) | 2023.06.01 |
MySQL 시간/날짜 관련 및 기타 함수들 (1) | 2023.06.01 |
각종 연산자들 (0) | 2023.05.29 |
SELECT 기능 (0) | 2023.05.29 |