문자 처리 함수에 대해 알아보겠습니다. (숫자 적용 가능)
문자를 자르고 붙이는 등 다양한 함수를 제공하고, 이 함수들은 중첩해서 사용할 수 있습니다.
오라클에서 문자를 세는 방법을 먼저 알아야합니다.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
H |
e |
l |
l |
o |
W |
o |
r |
l |
d |
사람이 숫자 세는 기준과 똑같습니다.
맨 첫문자를 1로 놓고 세어나갑니다.
기능을 먼저 소개하고 예제로 들어갈께요.
CONCAT('Hello', 'World') |
두 문자열을 붙임 |
HelloWorld |
SUBSTR('HelloWorld', 1, 5) |
문자열을 선택한 위치만큼 표시함 |
Hello |
LENGTH('HelloWorld') |
문자열의 길이 |
10 |
INSTR('HelloWorld', 'W') |
선택한 문자의 위치 |
6 |
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 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
* |
* |
* | * |
* |
1 |
3 |
0 |
0 |
0 |
RPAD는 값을 먼저 넣고 남은 공간을 입력한 대체 문자를 채워넣습니다.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
4 |
4 |
0 |
0 |
* |
* |
* |
* |
* |
* |
이번에 다룬 다른 함수들 보다 사용 빈도가 높으니, 알아두시면 좋습니다. ㅋ
언젠가 이런 질문을 받은 적이 있습니다.
''데이터베이스에서 이렇게 함수 사용해가면서 SQL 복잡하게 만들 필요가 있나요??
익숙한 자바에서 데이터 가져올때 처리해도 되잖아요??''
''아...그럼 그렇게 하세요^^''
데이터베이스는 기본적으로 대규모의 데이터를 처리하기 위해 만들어진 시스템입니다.
CONCAT 100만 행을 처리할때,
에어컨 빵빵하게 시원한 서버실에 있는 서버가 빠를까요..
선풍기 하나 돌아가는 내 PC가 빠를까요..
배우는게 귀찮으면, 개발자하시면 안됩니다.ㅋ
'Lecture > SQL & Oracle' 카테고리의 다른 글
[SQL 기본만 알아도 할껀 다한다.] 날짜 함수 (Date Functions) (3) | 2012.07.16 |
---|---|
[SQL 기본만 알아도 할껀 다한다.]숫자 함수(Number Functions) (1) | 2012.07.13 |
[SQL 기본만 알아도 할껀 다한다.] 대소문자 처리 함수 (Case manipulation Functions) (1) | 2012.07.09 |
[SQL 기본만 알아도 할껀 다한다.] 논리 조건 AND, OR, NOT (1) | 2012.07.06 |
[SQL 기본만 알아도 할껀 다한다.] 정렬 Order by에 대해 (3) | 2012.07.04 |