본문 바로가기

개발&컴퓨터/DB

[오라클] 문자열 자르기.

반응형

게시물을 작성할 때, 회사에서 일을 하거나 또는 개인적으로 공부하다가 쓰게 되는 것들을 위주로 올리고 있습니다.

 

간혹 아주 간단한 것들인데도 막상 쓰려고 하면 잘 기억이 안나거나 다른 언어들과 혼동되는 것들도 간단히 정리하여 포스팅하고 있습니다.

 

---------------------------------------------------------------------------------------------

 

오라클에서는 문자열 자르기 함수로 SUBSTR 을 제공하고 있습니다.

 

(MSSQL은 SUBSTRING을 제공하죠. 더 간단하게 LEFT, RIGHT 과 같은 함수들도 제공하고 있습니다. MSSQL은 개발자 편의성에서는 조금 더 나은 것 같습니다.)

 

SUBSTR(대상 문자열, 문자열 시작위치, 자를 길이)

 

SUBSTR(Column/Expression, m, n) // n 생략 가능

 

간단합니다. 위의 함수를 사용하면 됩니다. 대부분의 언어가 비슷하죠. 함수명만 조금 다르구요.

 

오라클은 문자열의 시작 위치를 0이 아닌 1로 봅니다.

 

 

샘플 쿼리 (시작 위치와 자를 길이 지정)

SELECT SUBSTR("THIS IS ORACLE", 1, 9) AS TEXT_EX FROM DUAL; 

 

 

결과 (문자열 처음부터 9번째 자리까지 가져옵니다.)

: THIS IS O

 

 

샘플 쿼리 (시작 위치와 자를 길이 지정)

SELECT SUBSTR("THIS IS ORACLE", 6, 5) AS TEXT_EX FROM DUAL; 

 

 

결과 (문자열 6번째 자리부터 시작해서 5번째 자리까지 문자를 가져옵니다.)

: IS ORA

 

 

샘플 쿼리 (시작 위치만 지정하고, 세번째 인자는 생략)

SELECT SUBSTR("THIS IS ORACLE", 3) AS TEXT_EX FROM DUAL; 

 

 

결과 (문자열 3번째 자리부터 문자열 끝까지 가져옵니다.)

: IS IS ORACLE

 

 

샘플 쿼리 (시작 위치를 음수로 지정만 지정)

SELECT SUBSTR("THIS IS ORACLE", -8, 6) AS TEXT_EX FROM DUAL; 

 

 

결과 (문자열 끝에서 8번째(반대로 세기) 자리부터 5번째 자리까지 문자를 가져옵니다.)

: S ORAC

 

 

SUBSTR 의 두번째 인자로는 문자열 형태(CHAR, VARCHAR2, CLOB 등)의 값이 와야 합니다.

 

또한 해당 위치에는 위처럼 단순 텍스트(Plain Text) 뿐만 아니라 변수(@aaa), DB레코드에 저장된 컬럼 데이터 등이 올 수 있습니다.

 

SUBSTR은 기본적으로 CHAR형의 문자열을 받아 사용됩니다. (BYTE 아님)

SUBSTRC 함수도 있는데, 이 함수는 문자열이 유니코드(Unicode)인 경우에 사용하시면 됩니다.

 

 

 

 

 

 

 

 

 

 

반응형