코드 그라데이션

[얄코] MySQL 1-3. 숫자와 문자열을 다루는 함수들 본문

Java/알고리즘

[얄코] MySQL 1-3. 숫자와 문자열을 다루는 함수들

완벽한 장면 2023. 6. 9. 09:30

1. 숫자 관련 함수들

함수 설명
ROUND 반올림
CEIL 올림
FLOOR 내림

 

함수 설명
ABS .절댓값

 

함수 설명
GREATEST (괄호 안에서) 가장 큰 값
LEAST (괄호 안에서) 가장 작은 값

 

그룹 함수, 조건에 따라 집계된 값을 가져온다.

함수 설명
MAX 가장 큰 값
MIN 가장 작은 값
COUNT  개수(NULL 값은 제외)
SUM 총합
AVG 평균값

 

함수 설명
POW(A, B) , POWER(A, B) A를 B만큼 제곱
SQRT 제곱근

 

함수 설명
TRUNCATE(N, n) N을 소숫점 n자리까지 선택

 

1)

SELECT 
  ROUND(0.5),
  CEIL(0.4),
  FLOOR(0.6);

실행 결과

 

 

2)

SELECT 
  Price,
  ROUND(price),
  CEIL(price),
  FLOOR(price)
FROM Products;

실행 결과

 

 

3)

SELECT ABS(1), ABS(-1), ABS(3 - 10);

실행 결과

 

 

4)

SELECT * FROM OrderDetails
WHERE ABS(Quantity - 10) < 5;

실행 결과

 

 

5)

SELECT 
  GREATEST(1, 2, 3),
  LEAST(1, 2, 3, 4, 5);

실행 결과

 

 

6)

SELECT
  OrderDetailID, ProductID, Quantity,
  GREATEST(OrderDetailID, ProductID, Quantity),
  LEAST(OrderDetailID, ProductID, Quantity)
FROM OrderDetails;

실행 결과

 

 

7)

SELECT
  MAX(Quantity),
  MIN(Quantity),
  COUNT(Quantity),
  SUM(Quantity),
  AVG(Quantity)
FROM OrderDetails
WHERE OrderDetailID BETWEEN 20 AND 30;

실행 결과

 

 

8)

SELECT
  POW(2, 3),
  POWER(5, 2),
  SQRT(16);

실행 결과

 

 

9)

SELECT Price, POW(Price, 1/2)
FROM Products
WHERE SQRT(Price) < 4;

실행 결과

 

 

10)

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);

실행 결과

 

 

11)

SELECT Price FROM Products
WHERE TRUNCATE(Price, 0) = 12;

실행 결과

 

 


2. 문자열 관련 함수

함수 설명
UCASE, UPPER 모두 대문자로
LCASE, LOWER 모두 소문자로

1)

SELECT
  UPPER('abcDEF'),
  LOWER('abcDEF');

실행 결과

 

 

2)

SELECT
  UCASE(CustomerName),
  LCASE(ContactName)
FROM Customers;

실행 결과

 

 

 

함수 설명
CONCAT (...) 괄호 안의 내용 이어붙임
CONCAT_WS(S, ...) 괄호 안의 내용 S로 이어붙임

1)

SELECT CONCAT('HELLO', ' ', 'THIS IS ', 2021)

실행 결과

 

 

2)

SELECT CONCAT_WS('-', 2021, 8, 15, 'AM')

실행 결과

 

 

3)

SELECT CONCAT('O-ID: ', OrderID) FROM Orders;

실행 결과

 

 

4)

SELECT
  CONCAT_WS(' ', FirstName, LastName) AS FullName
FROM Employees;

실행 결과

 

 

함수 설명
SUBSTR, SUBSTRING 주어진 값에 따라 문자열 자름
LEFT 왼쪽부터 N글자
RIGHT 오른쪽부터 N글자

1)

SELECT
  SUBSTR('ABCDEFG', 3),
  SUBSTR('ABCDEFG', 3, 2),
  SUBSTR('ABCDEFG', -4),
  SUBSTR('ABCDEFG', -4, 2);

실행 결과

 

 

2)

SELECT
  LEFT('ABCDEFG', 3),
  RIGHT('ABCDEFG', 3);

실행 결과

 

 

3)

SELECT
  OrderDate,
  LEFT(OrderDate, 4) AS Year,
  SUBSTR(OrderDate, 6, 2) AS Month,
  RIGHT(OrderDate, 2) AS Day
FROM Orders;

실행 결과

 

 

 

함수 설명
LENGTH 문자열의 바이트 길이
CHAR_LENGTH, CHARACTER_LENGTH 문자열의 문자 길이

1)

SELECT
  LENGTH('ABCDE'),
  CHAR_LENGTH('ABCDE'),
  CHARACTER_LENGTH('ABCDE');

실행 결과

 

 

2)

-- w3wchool 사이트에서는 한글이 제대로 동작하지 않습니다.
SELECT
  LENGTH('안녕하세요'), -- 15
  CHAR_LENGTH('안녕하세요'), -- 5
  CHARACTER_LENGTH('안녕하세요'); -- 5

실행 결과

 

 

함수 설명
TRIM 양쪽 공백 제거
LTRIM 왼쪽 공백 제거
RTRIM 오른쪽 공백 제거

1)

SELECT
  CONCAT('|', ' HELLO ', '|'),
  CONCAT('|', LTRIM(' HELLO '), '|'),
  CONCAT('|', RTRIM(' HELLO '), '|'),
  CONCAT('|', TRIM(' HELLO '), '|');

실행 결과

 

 

2)

SELECT * FROM Categories
WHERE CategoryName = ' Beverages '

실행 결과

 

 

3)

SELECT * FROM Categories
WHERE CategoryName = TRIM(' Beverages ')

실행 결과

 

 

함수 설명
LPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임
RPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임

1)

SELECT
  LPAD('ABC', 5, '-'),
  RPAD('ABC', 5, '-');

실행 결과

 

 

2)

SELECT
  LPAD(SupplierID, 5, 0),
  RPAD(Price, 6, 0)
FROM Products;

실행 결과

 

 

함수 설명
REPLACE(S, A, B) S 중 A를 B로 변경

 

1)

SELECT
  REPLACE('맥도날드에서 맥도날드 햄버거를 먹었다.', '맥도날드', '버거킹');

실행 결과

 

 

2)

SELECT
  REPLACE(Description, ', ', ' and ')
FROM Categories;

실행 결과

 

 

함수 설명
INSTR(S, s) S 중 s의 첫 위치 반환, 없을 시 0

 

1)

SELECT
  INSTR('ABCDE', 'ABC'),
  INSTR('ABCDE', 'BCDE'),
  INSTR('ABCDE', 'C'),
  INSTR('ABCDE', 'DE'),
  INSTR('ABCDE', 'F');

실행 결과

 

 

2)

SELECT * FROM Customers
WHERE INSTR(CustomerName, ' ') BETWEEN 1 AND 6;
-- < 6으로 하면?

실행 결과

 

 

함수 설명
CAST(A, T) A를 T 자료형으로 변환

1)

SELECT
  '01' = '1',
  CAST('01' AS DECIMAL) = CAST('1' AS DECIMAL);

실행 결과

 

 

2)

SELECT
  '01' = '1',
  CONVERT('01', DECIMAL) = CONVERT('1', DECIMAL);

실행 결과

 

 

 

728x90

'Java > 알고리즘' 카테고리의 다른 글

[Lv.0] 로그인 성공?  (2) 2023.06.10
[얄코] MySQL 1-4. 시간, 날짜 관련 함수들  (0) 2023.06.09
[Lv.0] 이어 붙인 수  (0) 2023.06.09
아스키 코드 관련  (0) 2023.06.09
[Lv.0] 뒤에서 5등 위로  (0) 2023.06.08
Comments