본문 바로가기
Lecture/SQL & Oracle

[SQL 기본만 알아도 할껀 다한다.] 문자 처리 함수 (Character-Manipulation Functions)

by 알 수 없는 사용자 2012. 7. 11.
반응형


문자 처리 함수에 대해 알아보겠습니다. (숫자 적용 가능)

문자를 자르고 붙이는 등 다양한 함수를 제공하고, 이 함수들은 중첩해서 사용할 수 있습니다.

오라클에서 문자를 세는 방법을 먼저 알아야합니다.


1 

10 

 H

사람이 숫자 세는 기준과 똑같습니다.

맨 첫문자를 1로 놓고 세어나갑니다.



기능을 먼저 소개하고 예제로 들어갈께요.

 CONCAT('Hello', 'World')

두 문자열을 붙임 

HelloWorld 

 SUBSTR('HelloWorld', 1, 5)

문자열을 선택한 위치만큼 표시함 

Hello 

 LENGTH('HelloWorld')

문자열의 길이 

10 

 INSTR('HelloWorld', 'W')

선택한 문자의 위치 

 TRIM('H' FROM 'HelloWorld')

첫문자나 마지막 문자부터 끝까지 잘라냄

elloWorld 

 REPLACE('HelloWorld', 'H', 'B')

선택한 문자를 변경 

BelloWorld 

 LPAD(salary, 10, '*')

10자리 공간에 우측에 문자를 배치

남은 공간을 * 로 채움

 *****35000

 RPAD(salary, 10, '*')

 10자리 공간에 좌측에 문자를 배치

남은 공간을 * 로 채움

 35000*****




CONCAT 은 2개의 컬럼을 하나의 컬럼 값으로 합치는 역할을 합니다.

3개 이상의 컬럼을 합치려면 CONCAT( CONCAT( ) ) 중첩해서 사용하셔야 합니다.

.. .. .. 이렇게 쓰시는 분.. 사실 거의 없으실겁니다. 우리에겐 ' || ' 이게 있으니까요.

first_name || last_name  이게 편합니다..ㅋ


LENGTH 는 유용하게 쓰실수 있는 함수입니다. 문자열의 자릿수를 세어줍니다.

큰 숫자일 경우 자릿수를 알면 처리하는데 간편하겠죠.ㅋ


INSTR 은 해당 컬럼에서 제시한 문자가 포함되어있다면 그 갯수를 세어줍니다.

두글짜 이상의 문자열로 하셔도 됩니다.



SUBSTR 은 선택한 범위의 문자만 나타내는 겁니다. 잘라버리는거 아닙니다.!

SUBSTR(job_id, 4) 는 4번째 자리부터!! 나타냅니다.

SUBSTR(job_id, 1, 3) 는 첫자리부터 3번째 자리까지 나타냅니다. 


TRIM은 from도 들어가고 .. 문법이 좀 특이합니다.

선택해서 삭제할 문자도 첫자리나 끝자리 둘 중 하나만 가능합니다.

만약 맨앞 맨뒤 문자가 같을 경우 같이 삭제됩니다. 하지만 원치 않을 경우 키워드를 선택해서 쓰시면 됩니다.

TRIM(LEADING 'd' from 'dHelloWorld')

TRIM(TAILING 'd' from 'dHelloWorld')

TRIM 의 다른 쓰임은 또 그때가서.ㅋ


REPLACE 는 선택한 컬럼의 문자를 다른 문자로 대체할 때 사용합니다.

어려울꺼 없네요.ㅋ




LPAD 와 RPAD 는 같은 쓰임새로 사용합니다. 방향만 좀 다를 뿐..

둘다 제시한 10자리 만큼의 문자열 공간을 만들어 놓고,

LPAD 는 왼쪽부터 입력한 대체 문자 * 를 채워넣습니다.

 1

3

 7

 9

10 

 *


RPAD는 값을 먼저 넣고 남은 공간을 입력한 대체 문자를 채워넣습니다.

 1

10 

 4

이번에 다룬 다른 함수들 보다 사용 빈도가 높으니, 알아두시면 좋습니다. ㅋ



언젠가 이런 질문을 받은 적이 있습니다.

''데이터베이스에서 이렇게 함수 사용해가면서 SQL 복잡하게 만들 필요가 있나요??

익숙한 자바에서 데이터 가져올때 처리해도 되잖아요??''

''아...그럼 그렇게 하세요^^''


데이터베이스는 기본적으로 대규모의 데이터를 처리하기 위해 만들어진 시스템입니다.

CONCAT 100만 행을 처리할때,

에어컨 빵빵하게 시원한 서버실에 있는 서버가 빠를까요..

선풍기 하나 돌아가는 내 PC가 빠를까요..


배우는게 귀찮으면, 개발자하시면 안됩니다.ㅋ