SQL 함수 사용하기 (단일 행 함수)

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


SQL 함수

SQL에서 함수란 데이터를 조회, 집계, 수정하는 과정에서 값을 가공하기 위해 다양한 내장함수를 제공한다. 단일 행 함수는 각각의 행(row)에 대해 개별적으로 적용되어 하나의 입력값에 대해 하나의 결과를 반환한다.

문자형 함수

문자 데이터를 가공하거나 문자열에 대한 정보를 얻을 떄 사용

  • LENGTH(str): 바이트 수
  • CHAR_LENGTH(str): 문자수를 반환
  • CONCAT(str1, str2…): 여러 문자열을 하나로 합침
  • CONCAT_WS(seperator, str1, str2…): 구분자(seperator)를 넣어 여러 문자열을 합침
  • LEFT(str, len) / RIGHT(str, len): 문자열을 왼/오에서 len만큼 잘라냄
  • SUBSTR(str, pos, len): pos위치에서 len만큼 잘라냄
  • LPAD(str, len, pad) / RPAD(str, len, pad): len길이만큼 pad문자를 채움
  • TRIM(str) / LTRIM(str) / RTRIM(str): 양쪽/왼/오의 공백을 제거
  • REPLACE(str, from, to): str에서 from 문자열을 to로 바꿈
  • INSTR(str, substr): str에서 substr이 처음 나타나는 위치를 반환(없으면 0)
-- 문제1: 고객 테이블에서 고객회사명의 문자 개수와 바이트 수를 조회
SELECT CHAR_LENGTH(고객회사명) AS '문자 개수', LENGTH(고객회사명) AS '바이트 수' FROM 고객;

-- 문제2: 고객 테이블의 도시와 주소를 합쳐서 '전체 주소' 라는 별칭으로 조회
-- 단, 도시와 주소 사이는 , 로 구분
SELECT CONCAT_WS(', ', 도시, 주소) AS '전체 주소' FROM 고객;

-- 문제3: 사원 테이블에서 입사일을 기준으로 연도, 월, 일을 각각 잘라서 조회
SELECT LEFT(입사일, 4) , SUBSTR(입사일, 6,2) , RIGHT(입사일, 2)  FROM 사원;

-- 문제4: 고객 테이블의 전화번호에서 구분자 - 을 . 로 변경하여 조회
SELECT 전화번호, REPLACE(전화번호, "-", ".") 번호변경 FROM 고객;

-- 문제5: 고객의 담당자명과 담당자직위를 공백 없이 붙인 문자열을 출력하고, 이 문자열의 길이도 함께 출력
SELECT CONCAT(TRIM(담당자명), TRIM(담당자직위)) AS "공백 없음", CHAR_LENGTH("공백 없음") FROM 고객;

-- 문제6: 주문번호가 H0248이면, 주문일자를 "2020-03-12"에서 "20200312" 형식으로 바꾸고, 이를 이용해 "ORD-H0248-20200312" 형식의 문자열을 출력
SELECT 주문일자, REPLACE (주문일자, "-", ""), CONCAT_WS("-", "ORD", 주문번호, REPLACE (주문일자, "-", "")) FROM 고객 WHERE 주문번호 = "H0248";