본문 바로가기

카테고리 없음

SQL - 문자 처리 함수

반응형

 

 

* 해당 게시물 태그 캡처 안에는 잔상이 남아 있습니다.

추후 수정할 예정이나, 언제가 될지는 저도 모르겠습니다. ;;

 

 

 

UPPER 

  • '문자' 값을 대문자로 변환하는 함수. 

 

 

LOWER

  • '문자' 값을 소문자로 변환하는 함수. 

 

 

 

INITCAP

  • '문자' 값의 이니셜만  대문자로 변환하는 함수. 

 

 

 

 


LENGTH / LENGTHB

  • LENGTH : '문자' 길이를 구하는 함수 
  • LENGTHB: '문자' 바이트 수를 구하는 함수

 

 

 

 

SUBSTR 

  • SUBSTR('문자열', 시작점, 반환할 개수)
  • 시작점이 양수인 경우 앞부터, 시작점이 음수인 경우 뒤부터 센다. 

 

6번째 자리부터 시작해 5개를 반환해 주었다.

 

음수 인자는 뒤에서부터 세므로 뒤에서부터 여섯 번째 자리에서 여섯 개를 반환해 주었다. 

 

 

  • 활용: hiredate을 가진 emp 테이블에서 사원명, 년도, 월을 칼럼으로 뽑아 보세요.

 

SELECT ename, SUBSTR(hiredate, 1, 2), SUBSTR(hiredate, 4, 2) FROM emp;

SUBSTR을 이용해 년도와 월을 따로 추출해서 컬럼으로 만들어 주었다.

 

  • 활용 hiredate을 가진 emp 테이블에서 사원명, 년도, 월을 칼럼으로 뽑고, 년도 앞에 '19'를 붙여 네 자리로 표현한 뒤 칼럼 이름을 지정해 주세요.

 

 

 

 

  • 활용 : 입사월이 9월인 사람의 사원명, 년도, 달을 뽑아 보세요.

 

SELECT ename, 19||SUBSTR(hiredate, 1,2) as "YEAR", 

SUBSTR(hiredate, 4,2) as "MON" FROM emp

WHERE SUBSTR(hiredate, 4,2)='09';

 

 

 

 

SUBSTRB

  • SUBSTRB('문자열', 시작점, 반환할 개수)
  • 시작점이 양수인 경우 앞부터, 시작점이 음수인 경우 뒤부터 센다. 
  • STRSTR와 다른 점은, 바이트 개수를 반환한다는 점이다. 
    • 한글은 한 글자에 2Byte 값을 가진다는 것을 유념하자. 

 

 

SELECT SUBSTR('HelloWorld to Oracle', 6, 5) AS "SUBSTR", 

SUBSTRB('HelloWorld to Oracle', 6, 5) AS "SUBSTRB" 

FROM dual;

영어는 두 가지 함수가 다른 결과를 보이지 않는다. 

 

 

SELECT SUBSTR('헬로우월드 투 오라클', 3, 2) AS "SUBSTR",

SUBSTRB('헬로우월드 투 오라클', 3, 2) AS "SUBSTRB" FROM dual;

상단 쿼리는 SUBSTR이라 문자가 2개 반환되었으나, SUBSTRB를 쓴 하단 쿼리는 '로'만 반환하였다.

 

 

 

INSTAR 

  • 특정 문자의 위치를 구하는 함수
  • INSTAR('문자', '특정 문자', 시작점, 몇 번째 발견) 
  • 시작점이 양수인 경우 앞부터, 시작점이 음수인 경우 뒤부터 센다. 

 

 

SELECT INSTR('HelloWorld to Oracle', 'o') FROM dual;

인자를 따로 넣어 주지 않으면 가장 처음 나오는 특정 문자의 위치를 반환한다.

 

 

SELECT INSTR('HelloWorld to Oracle', 'o', 6, 2) FROM dual;

6번째부터 시작이기 때문에 W부터 시작해 두 번째 나오는 'o'의 자리인 13을 출력한다.

 

 

 

LPAD / RPAD

  • LPAD : 왼쪽 정렬 후, 생긴 빈 공백을 문자로 채우는 함수
  • RPAD: 오른쪽 정렬 후, 생긴 빈 공백을 문자로 채우는 함수

 

SELECT LPAD('ORACLE', 20, '#') FROM dual;
SELECT RPAD('ORACLE', 20, '*') FROM dual;

 

 

LTRIM / RTRIM

  • LTRIM: 왼쪽의 공백 (whitespace)을 전부 삭제하는 함수.
  • RTRIM: 오른쪽의 공백 (whitespace)을 전부 삭제하는 함수.

 

 

  •  유의 : 공백만 있을 때 사라진다는 점을 유의하자. 문자가 하나라도 들어가 있으면 의도한 것으로 본다.

 

 

 

TRIM 

  • 특정 문자를 잘라내는 함수
  • TRIM('특정 문자' FROM '문자열') / 특정 문자를 지정하지 않으면 공백이 사라진다.
  • 특정 문자 앞이나 뒤에 공백이 있는 경우나, 대소문자가 다른 경우 잘라내지지 않는다.

 

공백과 대소문자를 다른 것으로 인식한다.

 

특정 문자 인자를 넣지 않은 경우 공백을 삭제한다. 문자 안에 있는 공백은 의도한 것으로 보니 유의하자. 

 

반응형