Data Engineering
[SQLD 자격검정 실전문제] Part 2-1. 65번 SQL 실행 결과 찾기
햣둘
2025. 5. 30. 07:27
정답 : 3번 [5]
문자열에서 줄바꿈 문자(CHR(10))의 개수를 세어 총합을 구하는 것으로, 결과는 5임.
REPLACE 문자열을 치환하는 함수임.
기본 사용 방식은 REPLACE('문자열', 'A', 'B')와 같은 방식인데, 마지막 3번째 파라미터를 REPLACE('문자열', 'A')와 같이 생략하는 경우 2번째 문자열을 제거하게 됨.
LEGTH는 문자열의 길이를 반환하는 함수이며 CHR은 ASII코드에 대한 문자를 반환하는 함수임.
(LENGTH(C1) - LENGTH(REPLACE(C1, CHR(10))) + 1) 은 총 줄 수를 계산하는 쿼리임.
[요약 설명]
이 문제는 문자열 함수인 LENGTH와 REPLACE의 동작 원리, 그리고 줄바꿈 문자(CHR(10))의 개수를 계산하는 방법을 이해하고 있는지를 평가함.
[이론적 내용]
1. LENGTH 함수
- 문자열 길이를 반환함
- ex) LENGTH('A->B') -> 3 (줄바꿈 문자를 포함한 길이)
2. REPLACE 함수
- 문자열에서 특정 문자를 다른 문자로 대체함
- ex) REPLACE('A->B', CHAR(10), '') -> 'AB' (줄바꿈 문자 제거)
- 길이 차이를 이용하여 줄바꿈 문자의 개수를 계산할 수 있음
3. CHR(10) 줄바꿈 문자 개수 계산
- 각 행에 대해 (LENGTH(C1) - LENGTH(REPLACE(C1, CHR(10))) + 1)로 줄바꿈 문자의 개수를 구함
DROP TABLE TAB1;
-- 테이블 생성
CREATE TABLE TAB1 (
RN NUMBER,
C1 VARCHAR2(50)
);
-- 데이터 삽입
INSERT INTO TAB1 VALUES (1, 'A→B');
INSERT INTO TAB1 VALUES (2, 'B→B→B');
-- 줄바꿈 수(라인수) 계산
SELECT SUM(CC)
FROM (
SELECT (LENGTH(C1) - LENGTH(REPLACE(C1, '→')) + 1) CC
FROM TAB1
);
SELECT LENGTH(C1), LENGTH(REPLACE(C1, '→')), (LENGTH(C1) - LENGTH(REPLACE(C1, '→')) + 1) CC
FROM TAB1
-- REPLACE
SELECT REPLACE('Hello World', 'World', 'SQL') FROM DUAL; -- 결과: Hello SQL
SELECT REPLACE('Hello World', 'World') FROM DUAL; -- 결과: Hello
SELECT REPLACE('Hello Hello', 'l', 'L') FROM DUAL; -- 결과: HeLLo HeLLo