2009년 5월 21일 목요일

단일행 함수 II (문자열 함수)

LENGTH : 문자의 길이를 반환한다.
LENGTHB : 문자의 바이트 수를 반환한다.

SELECT LENGTH ('오라클서버'),LENGTH('Oracle Server')
FROM DUAL;

SELECT LENGTHB ('오라클서버'),LENGTHB('Oracle Server')
FROM DUAL;

LPAD,RPAD : 입력받은 크기만큼 공간을 확보한다. 만일, 입력된 문자가 있다면 문자로 대체된다.

SELECT LPAD ('오라클',20,'★'),RPAD ('오라클',20,'★')
FROM DUAL;


LTRIM, RTRIM : 전체 문자열에서 입력받은 값과 일치하지 않는 값이 나올 때까지 순차적으로 검색한다. 일치하지 않는 값이 나오면 그 이후의 문자열을 출력한다.

SELECT LTRIM ('KOREAKORACEORACLE','KOREA'), RTRIM('KOREAKORACEORACLE','KOREA')
FROM DUAL;

만일, 별도의 입력값을 가지지 않는다면, 그 문자열의 공백만을 제거하게 된다.

SELECT LTRIM('          Oracle Server         '),RTRIM('          Oracle Server         '),TRIM('          Oracle Server         ')FROM dual;


SELECT 'Oracle         '||'           Server',RTRIM('Oracle         ')||LTRIM('           Server')
FROM dual;

TRANSLATE : 해당할 문자열 중 변환되어질 값과 변환되는 값을 입력받아 매칭되는데로 변환한다.

SELECT '02-2638-0101',TRANSLATE('02-2638-0101','0123456789','영일이삼사오륙칠팔구')
FROM DUAL;


SELECT 'Oracle Server MS-Sql Server', REPLACE('Oracle Server MS-Sql Server','Server','서버')
FROM dual;

사원 테이블을 만들어 보자.

CREATE TABLE tbl_sawon(
sano NUMBER(5),
saname VARCHAR2(20),
jubun VARCHAR2(13),
hiredate DATE
)tablespace users;

INSERT into tbl_sawon values(1001,'홍길동','7510091234567','1997-01-03');
INSERT into tbl_sawon values(1002,'엄정화','6912252234567','2000-03-12');
INSERT into tbl_sawon values(1003,'이영애','7312252234567','2002-09-12');
INSERT into tbl_sawon values(1004,'이연이','0010254234567','2004-11-12');
INSERT into tbl_sawon values(1005,'홍반장','0109253234567','2005-07-12');
INSERT into tbl_sawon values(1006,'김석훈','7709251234567','2005-07-12');

COMMIT;

SELECT * FROM tbl_sawon;

위의 문자열 함수들을 이용하여 홍씨를 황씨로, 이씨를 리씨로 바꿔보자.

UPDATE tbl_sawon
SET saname = REPLACE (saname,'홍','황')
WHERE saname LIKE '홍%';

UPDATE tbl_sawon
SET saname = ('리'|| LTRIM(saname,'이'))
WHERE LTRIM(saname) LIKE '이__';
--또는
UPDATE tbl_sawon
SET saname = ('리'|| SUBSTR(saname,2))
WHERE LTRIM(saname) LIKE '이__';


댓글 없음:

댓글 쓰기