② CONCAT(char1, char2), SUBSTR(char, pos, len), SUBSTRB(char, pos, len)
CONCAT 함수는 ‘||’ 연산자처럼 매개변수로 들어오는 두 문자를 붙여 반환한다.
입력
SELECT CONCAT('I Have', ' A Dream'), 'I Have' || ' A Dream'
FROM DUAL;
결과
CONCAT('IHAVE','ADREAM') 'IHAVE'||'ADREAM'
------------------------ ------------------
I Have A Dream I Have A Dream
SUBSTR는 문자 함수 중 가장 많이 사용되는 함수로, 잘라올 대사 문자열인 char의 pos번째 문자부터 len길이만큼 잘라낸 결과를 반환하는 함수다. pos 값으로 0이 오면 디폴트 값인 1, 즉 첫 번째 문자를 가리키며, 음수가 오면 char 문자열 맨 끝에서 시작한 상대적 위치를 의미한다. 또한 len 값이 생략되면 pos번째 문자부터 나머지 모든 문자를 반환한다.
입력
SELECT SUBSTR('ABCDEFG', 1, 4), SUBSTR('ABCDEFG', -1, 4)
FROM DUAL;
결과
SUBSTR('ABCDEFG',1,4) SUBSTR('ABCDEFG',-1,4)
------------------------- ----------------------------
ABCD G
SUBSTR 함수는 문자 개수 단위로 문자열을 자르는 반면 SUBSTRB는 문자 개수가 아닌 문자열의 바이트(BYTE) 수만큼 잘라낸 결과를 반환한다(SUBSTRB의 맨 끝 글자인 ‘B’는 BYTE를 의미함). 나머지 처리 로직은 SUBSTR과 같다.
입력
SELECT SUBSTRB('ABCDEFG', 1, 4), SUBSTRB('가나다라마바사', 1, 4)
FROM DUAL;
결과
SUBSTRB('ABCDEFG',1,4) SUBSTRB('가나다라마바사',1,4)
--------------------------- ---------------------------------
ABCD 가나
위 예제에서 보듯이 한글에서는 잘라올 길이로 4를 명시했지만 한 글자가 2바이트를 차지하므로 ‘가나’ 두 글자만 반환되었음을 확인할 수 있다.