[ 문자열 조작 ]
1) LENGTH
문자열 길이 결정
예) SELECT ename, LENGTH( ename )
FROM BONUS ;
--> ename의 문자열의 길이를 Return합니다.
2) SUBSTR
문자열 추출
사용법 : SUBSTR (string, starting point, number of character)
예) SELECT ename, SUBSTR( ename, 1, 6)
FROM BONUS ;
--> ename이 marcellino라면 marcel을 Return합니다.
SUBSTR 내에 함수를 사용할 수 있습니다.
예) SELECT SUBSTR( ename, LENGTH( ename ) - 6, 7)
FROM BONUS ;
--> ename이 marcellino라면 "length( ename ) - 6 "는 "4"이므로, cellino를 Return합니다.
3) REPLACE
문자열 교체
사용법 : REPLACE (string, existing string, replacement string)
예) UPDATE std_db
SET remark = REPLACE( remark, 'Inch (키)', 'cm (키)' ) ;
--> Inch라는 문자열을 모두 cm로 바꾸게 됩니다.
문자열 삭제
사용법 : REPLACE (string, removement string)
예) UPDATE std_db
SET remark = REPLACE( remark, 'marcel' ) ;
--> std_db TABLE의 remark 열에서 marcel이라는 학생의 이름이 삭제됩니다.
4) RTRIM, LTRIM
공백 제거
RTRIM : 문자열 내의 후미 공백( Trailing Blank ) 제거
LTRIM : 문자열 내의 선행 공백( Leading Blank ) 제거
사용법 : RTRIM (column name), LTRIM (column name)
예) UPDATE std_db
SET ename = RTRIM( ename )
WHERE ename like '%' ;
문자열 제거
사용법 : RTRIM (column name, 트리밍될 문자열), LTRIM (column name, 트리밍될 문자열)
예) UPDATE std_db
SET remark = LTRIM( remark, 'abc' ) ;
--> a, b, c가 문자열의 왼쪽에 있다면 a, b, c를 제거합니다.
RTRIM을 이용한다면 후미 문자를 제거할 수 있습니다.
위의 후미 공백 제거 SQL 예에서 WHERE절에 like %를 사용했는데,
이것이 열의 후미에 공백이 있는지 없는지 검사하는 방법중의 하나입니다.
5) LPAD, RPAD
원하는 문자열을 선행이나 후미에 Padding
LPAD : 문자열을 선행에 Padding
RPAD : 문자열을 후미에 Padding
사용법 : LPAD (string, n, pad_string), RPAD (string, n, pad_string)
예) SELECT LPAD( ename, 10 ) FROM std_db ;
--> 공백을 왼쪽에 Padding합니다.
SELECT LPAD( remark, LENGTH( remark ) + 20, 'I would like to say ' ) FROM std_db ;
--> 열의 왼쪽에 "I would like to say "라는 문자열을 추가합니다.
6) INITCAP, LOWER, UPPER
INITCAP : 각 단어의 첫 번째 문자를 대문자로 변환
LOWER : 모든 문자를 소문자로 변환
UPPER : 모든 문자를 대문자로 변환
사용법 : INITCAP (column name), LOWER (column name), UPPER (column name)
예) SELECT UPPER( ename ) FROM std_db ;
--> 모두 대문자로 디스플레이가 되겠죠? INITCAP, UPPER도 동일합니다.
7) DECODE
암호화된 CODE를 서술할 때 사용한다... 고 해야하나요?
사용법 : DECODE (expression, value1, returned value1 ... valueN, returned valueN, [default returned value] )
예) SELECT ename, eng_score, kor_score,
DECODE ( average,
'A', '90 ~ 100',
'B', '80 ~ 90',
'C', '70 ~ 80',
'D', '60 ~ 70',
'F', '0 ~ 60',
'Unknown Code' )
FROM std_db ;
--> 만약 average가 "A"이면 "90 ~ 100"이 디스플레이되고, "B"이면 "80 ~ 90"... 이런 식으로 디스플레이하게 됩니다.
만약 "P" 등과 같이 정의되지 않은 문자가 오면 "Unknown Code"를 Return하게 되죠.
8) ASCII
한 개의 문자( 첫 번째 문자)를 ASCII 값으로 나타냅니다.
사용법 : ASCII (char or varchar2 type column name )
예) SELECT ASCII( ename ), ename
FROM std_db ;
--> ename의 첫 자를 ASCII값으로 변경합니다. 만약 ename이 "Marcel"이면 "M"에 대한 ASCII 값인 "77"을 Return합니다.
9) INSTR
특정 문자열을 포함한 COLUMN에서의 문자열 위치 찾기
사용법 : INSTR (string1, string2, [starting position, [occurrence number]] )
starting position : string1 내에서 검색을 시작할 위치
occurrence number : string1 내에서 찾는 string2의 어커런스 수
예) SELECT remark, INSTR( remark, 'marcel' )
FROM std_db ;
--> std_db TABLE의 remark COLUMN에서 "marcel"의 첫 번째 어커런스를 Return한다.
"marcel"을 포함하지 않은 COLUMN에 대해서는 "0"을 Return하게 된다.
이 부분은 그냥 이런 게 있구나! 하고 참조한 후 나중에 사용하게 되면 다시 찾아보세요. 그러면 이해가 갈겁니다.
'DataBase > Sql' 카테고리의 다른 글
[Sql] Oracle, msSql - 프로시저 소스 검색 (0) | 2009.09.18 |
---|---|
[Sql] Oracle - 간단한 저장프로시저 (0) | 2009.09.18 |
[Sql] Oracle - Index생성 & 삭제 (0) | 2009.07.30 |
[Sql] Oracle - 날짜와 시간 포맷팅 (0) | 2009.06.01 |
[Sql] Oracle - 사용자 계정 컨트롤!! (0) | 2009.05.20 |