본문 바로가기

프로그래밍 강의 메모/갖고노는 MySQL 데이터베이스 by 얄코

SELECT 기초 > 숫자와 문자열을 다루는 함수들

https://inf.run/maQC

 

갖고노는 MySQL 데이터베이스 by 얄코 - 인프런 | 강의

비전공자도 이해할 수 있는 MySQL! 빠른 설명으로 필수개념만 훑은 뒤 사이트의 예제들과 함께 MySQL을 ‘갖고 놀면서’ 손으로 익힐 수 있도록 만든 강좌입니다., - 강의 소개 | 인프런...

www.inflearn.com

숫자 관련 함수들

 

함수 설명
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;

 

문자열 관련 함수들

 

함수 설명
UCASEUPPER 모두 대문자로
LCASELOWER 모두 소문자로

 

 

함수 설명
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;

 

 

함수 설명
SUBSTRSUBSTRING 주어진 값에 따라 문자열 자름
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_LENGTHCHARACTER_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