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( , ) 를 사용해서 두 날짜의 일 차이를 알 수 있다.