나만 헷갈리는 mysql8 함수

문자함수

 

1. 문자열 자르기

SELECT
  capital_city,
  substr(capital_city,2,2) as substr,
  mid(capital_city,2,2) as mid,
  substring(capital_city,2,2) as substring
FROM class.country

- 숫자는 1부터 시작

- 3함수 모두 기능이 같음

- substr(컬럼명, 시작할 문자열의 위치 값, 리턴 시킬 값의 길이)

 

2, 특정 문자열 위치 찾기

SELECT
  capital_city,
  instr(capital_city, 'a') as instr_a,
  instr(capital_city, 'do') as instr_do,
  instr(capital_city, 'r') as instr_r
FROM class.country;

- 두 글자 이상의 변수를 주면 해당 문자가 시작하는 그 지점의 위치를 반환

- 대소문자를 구분하지 않음

 

3. 원하는 문자의 자릿수를 채우기

SELECT
  continent,
  lpad(continent, 10, '@') as lpad,
  rpad(continent, 10, '@') as rpad
FROM class.country;

- lpad(컬럼명, 기준 자릿수, 채워 넣을 숫자 or 문자)

 

4.문자열 공백 없에기

SELECT
  capital_city,
  trim(capital_city) as trim,
  ltrim(capital_city) as ltrim,
  rtrim(capital_city) as rtrim
FROM class.country

- trim: 양쪽 공백 제거

- ltrim: 왼쪽 공백 제거

- rtrim: 오른쪽 공백 제거

 

5. 문자열 수정

SELECT
  capital_city,
  replace(capital_city, 'o', '$') as replace_function
FROM class.country;

- replace(컬럼명, '찾을 문자', '치환할 문자')

- 대소문자를 구분한다.

 

책 이외 번외

1. 문자열 분할

SELECT SUBSTRING_INDEX('google.co.kr', '.', 1); -- 'google'
SELECT SUBSTRING_INDEX('google.co.kr', '.', 2); -- 'google.co'
SELECT SUBSTRING_INDEX('google.co.kr', '.', 3); -- 'google.co.kr'
SELECT SUBSTRING_INDEX('google.co.kr', '.', -1); -- 'kr'
SELECT SUBSTRING_INDEX('google.co.kr', '.', -2); -- 'co.kr'
SELECT SUBSTRING_INDEX('google.co.kr', '.', -3); -- 'google.co.kr'

- substring_index('문자열', '구분자', '위치')

 

 

숫자함수

1. 날짜와 시간을 연산하여 출력하는 방법

date_add(date, interval expr type)
date_sub(date, interval expr type)
adddate(date, interval expr type)
subdate(date, interval expr type)

 

select date_add('2020-12-31 23:59:59', interval 1 second); -- 주어진 시간에 1초를 더한다
select date_add(now(), interval 31 day); -- 현재날짜에 31일을 뺀다
select date_add(now(), interval '-1 17' day_hour); -- 현재시작에 하루와 17시간을 뺀다

 

2. 시간과 초 데이터를 변환하여 출력

select sec_to_time(5000); -- 5,000초를 시간으로 환산

 

select time_to_sec('20:20:50'); -- 20시간 20분 50초를 초 데이터로 변환

3. 날짜에 달(월)을 더해주는 함수

- PERIOD_ADD(P, N)

select period_add(2001,15); -- YYMM / result: 202104
select period_add(202001,15); -- YYYYMM / result: 202104

 

4. 원하는 날짜를 원하는 형태로 변경하여 출력

- select date_format('date 데이터','출력 format');

select date_format(now(), '%p'); -- 오전, 오후 출력
select date_format(now(), '%Y-%m-%d %H:%i:%s'); -- 자리년도와 일, 월, 24 시시간과 분, 초

 

변환함수

1. 데이터 타입을 서로 변환시켜주는 형 변환 함수

- CAST ( 표현 할 값 AS 데이터 형식[(길이)] );
- CONVERT ( 표현 할 값 , 데이터 형식[(길이)] );

 

문자 <--> 숫자

select cast(100 as char) as num_to_char, cast('100' as signed) as char_to_num from dual;

 

문자 -> 날짜

SELECT
  '2016-08-25 03:30:00',
  CAST('2016-08-25 03:30:00' AS DATETIME) AS char_to_datetime
FROM DUAL;

 

조건 함수

 

 

 

출처

독학으로 예재 따라 익히는 mysql sql 입문서