💡 SELECT 함수(컬럼이름1)
, 함수(컬럼이름2)
FROM 테이블 ;
1. 문자 함수
LENGTH() | 문자열 길이 반환 |
TRIM() | 앞,뒤 공백 제거 |
UPPER(), LOWER() | 대문자 / 소문자로 변경 |
LEFT(값, N) | 왼쪽부터 N 번째까지 |
RIGHT(값, N) | 오른쪽부터 N번째까지 |
REPLACE() | 특정 문자를 찾아서 변경 |
▶ 예제
# LENGTH
SELECT NAME, length(NAME) -- NAME컬럼의 문자열 길이
FROM STOCK_INFO
ORDER BY 2 DESC; -- 2번째 컬럼 문자열이 긴 순서대로 정렬(내림차순)
# TRIM -- 앞뒤 공백 제거
SELECT trim(' YUMIN ')
SELECT *
FROM STOCK_INFO
WHERE REGION = TRIM(' CN '); -- 휴먼에러로 공백이 붙은 상태의 문자로 조회가 안될때 주로 사용
# LOWER
SELECT LOWER(NAME)
FROM STOCK_INFO
# LEFT
SELECT LEFT(NAME, 3) -- 앞에서 3번째까지 가져옴
FROM STOCK_INFO;]
# RIGHT
SELECT NAME, RIGHT(NAME, 3)
FROM STOCK_INFO;
# REPLACE
SELECT NAME, REPLACE(NAME, 'LIMITED', 'LTD') --NAME컬럼에서 LIMITED를 LTD로 바꿔서 불러옴
FROM STOCK_INFO;
LPAD(값, 총 문자길이, 채울 문자) RPAD(값, 총 문자길이, 채울 문자) |
지정한 길이 만큼 왼쪽부터/오른쪽부터 특정문자로 채움 |
SUBSTRING() | 특정 위치에서 자르기 |
CONCAT() | 문자 붙이기 |
CONCAT_WS() | 문자 사이에 값 넣기 |
▶ 예제
# LPAD
SELECT ID, LPAD(ID, 6, 0) --ID를 6자리가 되게만들고, 빈자리는 왼쪽부터 0으로 채우기
FROM STOCK_INFO;
# RPAD
SELECT ID, RPAD(ID, 6, 'A') --ID를 6자리가 되게만들고, 빈자리는 오른쪽부터 'A'로 채우기
FROM STOCK_INFO;
# SUBSTRING
SELECT SUBSTRING('2020-10-10', 1, 4) YEAR -- 1번째부터 4글자 잘라서 불러오기, 컬럼명은 YEAR
SUBSTRING('2020-10-10', 6, 2) MONTH -- 6번째부터 2글자 잘라오기, 컬럼명은 MONTH
=> 2020 10
리트코드 예시 문제 - 첫 번째 문자만 대문자로, 나머지는 소문자로 변경
2022.12.23 - [Data Analytics/CodingTest] - [leetcode] 1667. Fix Names in a Table / CONCAT, SUBSTRING
[leetcode] 1667. Fix Names in a Table / CONCAT, SUBSTRING
1667. Fix Names in a Table Write an SQL query to fix the names so that only the first character is uppercase and the rest are lowercase. Return the result table ordered by user_id. The query result format is in the following example. 첫 번째 문자만
dataanalysisdot.tistory.com
2. 날짜 & 시간 함수
CURDATE() | 현재 날짜 반환 |
CURTIME() | 현재 시간 반환 |
NOW() | 현재 날짜와 시간 반환 |
YEAR() | 연도 반환 |
MONTH() | 월 반환 |
DAY() | 일 반환 |
LAST_DAY() | 해당 월의 마지막 일 반환 |
WEEKDAY() | 요일 값 반환 월요일 : 0 |
DAYNAME() | 요일 이름 반환 |
ADDDATE() | 시간 / 날짜 더하기 |
SUBDATE() | 시간 / 날짜 빼기 |
DATEDIFF() | 두 시간/ 날짜의 일 차이 반환 |
TIMEDIFF() | 두 시간/날짜의 시간 차이 반환 |
%Y | 4자리 연도 |
%y | 2자리 연도 |
%M | 영문 월(길게) |
%b | 영문 월(짧게) |
%m | 두자리 숫자 월 ex) 01, 02..12 |
%c | 한자리 숫자 월 ex) 1, 2, ..12 |
%W | 영문 요일 (길게) |
%a | 영문 요일 (짧게) |
%i | 분 |
%T | hh:mm:ss |
%d | 일자 (두자리) ex) 01,02..31 |
%e | 일자 (한자리) ex) 1,2,3..31 |
%I | 시간(12시간) |
%H | 시간(24시간) |
%r | hh:mm:ss AM,PM |
%S | 초 |
▶ 날짜 함수 기본 예제
SELECT curdate()
,curtime()
,now()
,year(now())
,month(now())
,day(now());
# 해당 컬럼의 연도, 월, 일만 뽑고싶을때
SELECT marketdate, YEAR(marketdate), MONTH(marketdate),DAY(marketdate)
FROM STOCKETF_PRICE;
# 해당 월의 마지막 일 뽑기 -> 매월 말에 하는 업무의 일자를 기록하려고 할때 주로 사용
SELECT marketdate, LAST_DAY(marketdate)
FROM STOCKETF_PRICE;
# ADDDATE
SELECT marketdate, LAST_DAY(marketdate),
ADDDATE(LAST_DAY(marketdate), 1) -- 다음달 첫째날을 구하고 싶을때 사용
FROM STOCKETF_PRICE;
=> 2020-04-29 2020-04-30 2020-05-01
# SUBDATE
SELECT marketdate,
subdate(marketdate,3)
FROM STOCKETF_PRICE;
=> 2020-04-29 2020-04-26
# datediff
SELECT distinct marketdate, LAST_DAY(marketdate), --distinct 중복제거
datediff(marketdate, LAST_DAY(marketdate)) -- marketdate와 lastday날짜 차이
FROM STOCKETF_PRICE;
=> 2020-04-29 2020-04-30 -1
▶ date_format() 기본 예제
SELECT distinct date_format(marketdate, '%Y %M')
FROM STOCKETF_PRICE
order by marketdate;
=> 2018 January
2018 February
2018 March
2018 April
.
.
SELECT distinct marketdate, date_format(marketdate, '%Y년')
FROM STOCKETF_PRICE
order by marketdate;
=> 2018-01-02 2018년
'🛠️Skill > SQL' 카테고리의 다른 글
[SQL문법] REPLACE 특정 문자 변경 (0) | 2022.11.17 |
---|---|
[SQL문법] CONCAT 함수, || 연산자 (문자열 연결, 합치기) (0) | 2022.11.17 |
[SQL문법] JOIN문 / NATURAL, INNER, CROSS, OUTER, SELF JOIN (0) | 2022.11.08 |
[SQL 문법] RANK/DENSE_RANK, LAG, 분할 함수 / 테이블 분할 (0) | 2022.11.07 |
[SQL문법] GROUP BY / HAVING - MySQL (0) | 2022.11.07 |
댓글