home
데이터 생성, 조작과 변환
문자열 조작
concat()
으로 문자열을 붙이고,char()
을 통해서 ASCHII 문자열을 생성한다.length()
로 문자열의 개수를 반환- char 자료형의 경우, 빈 칸은 더 없앤 채로 반환된다.
position(str IN fld)
로 부분 문자열의 위치를 찾을 수 있다.SUBSTRING(str, 시작위치, 몇개)
로 문자열을 추출할 수 있다.SELECT name, name LIKE '%y' ends in y FROM category;
- 여기에서 y로 끝나는 카테고리인지 아닌지 0 아니면 1로 나타낸다.
INSERT(원래 문자열, 시작위치, 대체할 문자 개수, 대체 문자열)
로 중간을 바꿀 수 있다.
숫자 데이터 처리
- 나머지는
MOD(int, int)
로 POW(int, int)
거듭 제곱- 올림:
CEIL()
, 내림FLOOR()
ROUND
ROUND()
기본은 반올림ROUND(72.090, 1)
을 하면72.1
반환, 즉 소수점 ~ 번재까지 나타내는데 뒷자리 보고 반올림 함ROUND(17, -1)
음수와TRUNCATE(17, -1)
음수의 차이점- ROUND(17, -1)는 17을 가장 가까운 10의 배수로 반올림하여 20을 반환합니다.
- TRUNCATE(17, -1)은 십의 자리에서 숫자를 잘라내어 10을 반환합니다.
- 결국, 두 함수의 주요 차이점은 ROUND()가 반올림을 하여 가장 가까운 값으로 변경하는 반면, TRUNCATE()는 지정된 자릿수 이후의 숫자를 단순히 잘라내어 버림
SIGN()
으로 양수면 1, 음수면, -1, 0이면 0
시간 데이터 처리
SELECT @@global.time_zone, @@session.time_zone
으로 시간대 확인 가능SET time_zone = 'Asia/Seoul'
로 바꿀 수 있음
- date, datetime, timestamp, time 형식의 문자열을 해당 열에 채우려고 하면 서버가 알아서 변환한다.
CAST()
를 사용해서 서버가 판단 할 수 없을 때나 기본 형식이 아닐 때 변환이 가능하다.SELECT CAST('2019-09-17 15:30:00' AS DATETIME)
STR_TO_DATE()
를 사용해서 문자열에서 시간 데이터를 생성하는 것도 가능STR_TO_DATE('September 17, 2019', '%M %d %Y')
- M은 영어 월명, m은 숫자 월명, d는 일, W는 요일 명, Y는 4자리 연도, y는 두 자리 연도, H는 24시간, h는 12시간, i는 분, p는 오후, 오전 …
CURRENT_DATE()
,CURRENT_TIME()
,CURRENT_TIMESTAMP()
로 현재 시간 반환 가능DATE_ADD(INTERVAL int SECOND)
식으로 시간 계산도 가능minute_second
,hour_second
,year_second
로 00:00, 00:00:00 식으로 시간 계산도 가능하다.SET return_data = DATE_ADD(return_data, INTERVAL '3:27:11' HOUR_SECOND)
식으로 가능
LATE_DAY
로 해당 월의 마지막 날짜를 알 수 있다.DAY_NAME('2019-08-18')
을 통해서 요일을 알 수 있다.EXTRACT(YEAR FROM '')
을 통해서 특정 기간 자료형을 추출 할 수 있다.DATEDIFF( , )
를 사용해서 두 날짜의 일 차이를 알 수 있다.