문자열 함수는 데이터를 원하는 형식으로 가공하거나 특정 패턴을 찾아내는 데 사용됩니다. SQLD 시험에서는 각 함수의 정확한 기능, 특히 시작 인덱스, 공백 처리, 그리고 DBMS별 차이를 정확히 구분하는 문제가 자주 출제됩니다.
| 함수 | 개념 | 시험 포인트 (★★★★★) |
|---|---|---|
SUBSTR(문자열, 시작, 길이) | 문자열 일부 추출 | 시작 위치는 1부터 시작. 길이가 생략되면 끝까지 반환. |
INSTR(문자열, 찾을문자, [, 시작][, 순서]) | 특정 문자의 위치 반환 | 결과는 위치 값(숫자), 문자열이 아님. |
LENGTH(문자열) | 문자열 길이 반환 | 공백을 포함한 전체 길이를 반환. |
TRIM(문자열) | 양쪽 공백/특정 문자 제거 | 기본은 양쪽의 공백 제거. TRIM(FROM 'XXX') 형식으로 특정 문자 제거 가능. |
LPAD(문자열, 길이, 채울문자) | 왼쪽을 채움 | LEFT PAD, 왼쪽을 지정된 길이까지 채움. |
RPAD(문자열, 길이, 채울문자) | 오른쪽을 채움 | RIGHT PAD, 오른쪽을 지정된 길이까지 채움. |
REPLACE(문자열, 찾을문자, 바꿀문자) | 문자열 치환 | 문자열의 일부를 다른 문자열로 모두 바꿈. NULL도 치환 가능. |
UPPER / LOWER | 대소문자 변환 | 문자열 전체를 대문자/소문자로 변환. |
|| (파이프 기호)SELECT 'SQLD' || ' EXAM' FROM DUAL;CONCAT() 함수SELECT CONCAT('SQLD', ' EXAM');SQLD 시험은 Oracle을 기반으로 출제되므로 || 사용법을 알아두는 것이 중요합니다.SUBSTR과 INSTR 구분: SUBSTR은 결과가 문자열, INSTR은 **결과가 숫자(위치)**라는 점을 명확히 구분해야 합니다.TRIM과 공백: TRIM(' SQLD ')의 결과는 'SQLD' 입니다.LPAD와 RPAD의 방향: 왼쪽(L)과 오른쪽(R)을 정확히 구분해야 합니다.SUBSTR → String Sub (문자열 일부)INSTR → In String (문자열 안의 위치)LPAD → Left PAD (왼쪽 채우기)RPAD → Right PAD (오른쪽 채우기)1. 다음 SQL문의 실행 결과는?
SELECT SUBSTR('SQLD EXAM', 3, 3) FROM DUAL;
A. SQL
B. LD
C. LD
D. LDE
2. 다음 SQL문의 실행 결과는?
SELECT INSTR('SQLD EXAM', 'E', 1, 1) FROM DUAL;
A. 5
B. 6
C. 7
D. 8
3. 다음 중 REPLACE('A-B-C', '-', ' ')의 실행 결과와 동일한 것은?
A. TRIM(' A B C ')
B. CONCAT('A','B','C')
C. SELECT 'A B C' FROM DUAL;
D. REPLACE('A-B-C', '-', '')
4. 다음 SQL문의 결과가 '00SQLD'가 되기 위한 쿼리로 올바른 것은?
A. RPAD('SQLD', 6, '0')
B. LPAD('SQLD', 6, '0')
C. LPAD('SQLD', 2, '0')
D. TRIM('0' FROM '00SQLD')
SUBSTR은 1부터 시작하므로, 3번째 글자인 'L'부터 3글자를 추출합니다. 'L', 'D', ' '(공백)이 포함되어 'LD '가 됩니다.'SQLD EXAM'에서 'E'는 6번째 위치에 있습니다. INSTR은 특정 문자의 위치를 숫자로 반환합니다.REPLACE('A-B-C', '-', ' ')는 -를 공백으로 바꾸므로 'A B C'가 됩니다.LPAD('SQLD', 6, '0')은 'SQLD' 문자열의 왼쪽에 0을 채워 총 길이가 6이 되도록 만듭니다.