SQL

[SQL] 단일행 함수 (문자형, 숫자형, 날짜시간, 형변환, 제어흐름)

Bay Im 2024. 3. 22. 11:24
  • 문자형 함수
    • CHAR_LENGTH(문자열)
      • 문자의 개수 반환
    • LENGTH(문자열)
      • 문자열에 할당된 바이트 수 반환
    • CONCAT(문자열들)
      • 문자열들 연결
    • CONCAT_WS(구분자, 문자열들)
      • 구분자와 함께 문자열 연결
    • GROUP_CONCAT(문자열)
      • 자동으로 , 로 넣어서 구분하여 나열
    • LEFT(문자열, 길이)/RIGHT(문자열, 길이)
      • 문자열의 왼쪽/오른쪽부터 길이만큼 문자열 반환
    • SUBSTR(문자열, 시작위치, 길이)
      • 지정한 위치부터 길이만큼 문자열 반환
    • SUBSTRING_INDEX(문자열, 구분자, 인덱스)
      • 지정한 구분자를 기준으로 문자열 분리 후 가져오는 함수
      • SQL은 인덱스가 1부터 시작한다.
    • LPAD(문자열, 길이, 채울문자열)/RPAD(문자열, 길이, 채울문자열)
      • 지정한 길이에서 문자열을 제외한 빈칸을 특정 문자열로 채울 때 사용
    • LTRIM(문자열)/RTRIM(문자열)
      • 왼쪽/오른쪽 공백 제거
    • TRIM(문자열)
      • 양쪽 공백 제거
    • TRIM(제거할문자열의방향(BOTH/LEADING/TRAILING) 제거할문자열 FROM 문자열)
      • 양쪽에 있는 동일 문자열 제거
    • FIELD(찾을문자열, 문자열들)
      • 문자열들 중에서 찾을 문자열이 있으면 해당 문자열의 위치 반환
      • 찾는 문자열이 없으면 0 반환
    • FIND_IN_SET(찾을문자열, 문자열리스트)
      • 문자열 리스트에서 지정한 문자열을 찾아서 위치 인덱스 반환
    • LOCATE(부분문자열, 기준문자열)
      • 기준 문자열에서 부분 문자열을 찾아서 위치 값 반환
      • INSTR(기준문자열, 부분문자열) 동일
    • ELT(찾을문자열위치, 문자열들)
      • 지정한 위치에 있는 문자열 반환
      • 위치 인덱스 값을 넣어서 찾는다.
    • REPEAT(문자열, 횟수)
      • 문자열 해당 횟수만큼 반복
    • REPLACE(문자열, 원래문자열, 바꿀문자열)
      • 문자열의 일부를 다른 다른 문자열로 대체
    • STUFF(문자열, 시작인덱스, 크기, 바꿀문자열)
      • 시작 인덱스부터 해당 크만큼 다른 문자열로 치환
    • REVERSE(문자열)
      • 문자열을 거꾸로 뒤집을 때 사용
  • 숫자형 함수
    • CEILING(숫자)
      • 숫자 올림
    • FLOOR(숫자)
      • 숫자 내림
    • ROUND(숫자[, 반올림할자릿수])
      • 지정한 위치에서 반올림
    • TRUNCATE(숫자[, 버림할자릿수])
      • 지정한 위치에서 버림
    • ABS(숫자)
      • 절대값 반환
    • SIGN(숫자)
      • 양수면 1, 음수면 -1 반환
    • MOD(숫자1, 숫자2)
      • 나머지 반환
    • POWER(숫자1, 숫자2)
      • n 제곱승 값 반환
    • SQRT(숫자)
      • 제곱근 값 반환
    • RAND() / RAND(숫자)
      • 매개변수 넣지 않으면 0과 1 사이 임의의 실수 값 반환
      • 매개변수에 숫자를 넣으면 매번 동일한 임의의 값을 얻을 수 있다.
      • ROUND(), TRUNCATE() 등 함수 같이 사용시 임의의 정수를 만들 수 있다.
        • SELECT ROUND(RAND() * n); → 0~n 값 반환
        • SELECT ROUND(RAND() * n) + 1; → 1~n 값 반환
  • 날짜/시간 함수
    • NOW(), SYSDATE()
      • 현재 날짜와 시간 반환
    • CURDATE()
      • 현재의 날짜 반환
    • CURTIME()
      • 현재의 시간 반환
    • YEAR(), QUARTER(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND()
      • 연도, 분가, 월, 일, 시, 분, 초 반환
    • DATEDIFF(끝일자, 시작일자)
      • 지정한 기간 반환
      • 끝일자-시작일자 동작이다.
    • TIMESTAMPDIFF(단위, 시작일자, 끝일자)
      • 기간을 지정한 단위 기준으로 반환
      • 단위: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR
    • ADDDATE(날짜, 기간)
      • 지정한 날짜를 기준으로 그 기간만큼 더한 날짜 반환
    • SUBDATE(날짜, 기간)
      • 기간만큼 뺀 날짜 반환
    • LAST_DAY(날짜)
      • 해당 월의 마지막 일자 반환
    • DAYOFYEAR(날짜)
      • 현재 연도에서 며칠이 지났는지 반환
    • MONTHNAME(날짜)
      • 월을 영문으로 반환
    • WEEKDAY(날짜)
      • 요일을 정수로 반환
  • 형 변환 함수
    • CONVERT(값, 데이터타입), CAST(값 AS 데이터타입)
      • 원하는 데이터 타입으로 변경
  • 제어 흐름 함수
      • IF(조건, 수식1, 수식2)
        • 조건의 결과가 참이면 수식1, 거짓이면 수식2 반환
      • IFNULL(수식1, 수식2)
        • 수식1이 NULL이 아니면 수식1의 값 반환, NULL이면 수식2의 값 반환
      • NULLIF(수식1, 수식2)
        • 두 수식의 값을 비교하여 값이 같으면 NULL 반환, 값이 다르면 수식1의 값 반환
      • CASE문 (다중 조건)
        • CASE
              WHEN 조건식1 THEN 값
              WHEN 조건식2 THEN 값
              ELSE 값
          END AS 별칭열​

           
        • 모든 조건을 만족하지 않으면 ELSE 다음에 값을 넣어준다.
        • CASE 문은 마지막에 END로 닫아줘야 한다.
        • 예시
          • SELECT 담당자명, 고객회사명, 도시,
            CASE
                WHEN 마일리지 >= 100000 THEN 'VVIP고객'
                WHEN 마일리지 >= 10000 THEN 'VIP고객'
                ELSE '일반고객'
            END AS 마일리지구분
            FROM 고객;​