Coding Planet

[SQLD] SQL 자격검정 실전문제(노랭이) - 41번 문제 풀이 본문

DB, SQL

[SQLD] SQL 자격검정 실전문제(노랭이) - 41번 문제 풀이

jhj.sharon 2023. 9. 1. 19:59
반응형

문제 41.

다음 중 아래와 같은 2건의 데이터 상황에서 SQL의 수행 결과로 가장 적절한 것은? (단, 이해를 돕기 위해 ↓는 줄바꿈을 의미 -> 실제 저장값이 아님, CHR(10) : ASCII 값 -> 줄바꿈을 의미한다.)

TAB1 

ROWNUM C1
1 A

A
2 B

B

B

 

SELECT SUM(CC)
FROM(
	SELECT(LENGTH(C1) - LENGTH(REPLACE(C1, CHR(10)))+1) CC
    FROM TAB1
    )

 

  • 위 문제는 라인 수를 구하기 위한 문제이다.
  • LENGTH('문자열') : 문자열의 길이를 Integer 형식으로 출력한다. ex) LENGTH('ABC') = 3
  • LENGTH함수는 줄바꿈 또한 한 자리로 읽는다.
  • CHR/CHAR(ASCII번호) : 해당 ASCII 값을 문자로 바꿔준다. 이 때 ASCII 번호 10은 줄바꿈(\n)을 의미한다.
  • REPLACE 함수는 문자열 내에서 지정된 부분 문자열을 다른 문자열로 대체하는 데 사용된다.  
  • 따라서 REPLACE(C1,CHR(10))은 C1 ( 'A ↓ A')에서 줄바꿈(↓)을 삭제하라는 의미이다. 따라서 결과값은 'AA'이다.
  • 여기에 1을 더해주면 CC가 된다.
  • 따라서 SUM(CC) = 2 + 5 = 5

 

**REPLACE 함수 

REPLACE(string, search_string, replacement_string)
//string: 대체 작업을 수행할 원본 문자열
//search_string: string에서 찾을 문자열 또는 문자
//replacement_string: search_string을 대체할 문자열

SELECT REPLACE('HELLO WORLD', 'WORLD', 'ORACLE') FROM DUAL;
//결과: HELLO ORACLE

SELECT REPLACE('123-456-7890', '-', '') FROM DUAL;
//결과: 1234567890
 
//REPLACE함수에서 세 번째 인자 (replacement_string)를 생략하면, 해당 문자열은 삭제
SELECT REPLACE('HELLO WORLD', 'WORLD') FROM DUAL;
//결과: HELLO
반응형
Comments