Coding Planet
[SQLD] SQL 자격검정 실전문제(노랭이) - 41번 문제 풀이 본문
반응형
문제 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
반응형
'DB, SQL' 카테고리의 다른 글
[SQLD] 단일행 NULL관련 함수들(NVL, ISNULL, NULLIF, COALESCE) (0) | 2023.09.03 |
---|---|
[SQLD] CASE 표현식 : SEARCHED CASE와 SIMPLE CASE - 노랭이 43번 (0) | 2023.09.01 |
[SQLD] SQL 연산자의 우선순위 - SQLD 기출문제 포함 (0) | 2023.09.01 |
[SQLD] 데이터베이스에서 트랜잭션의 격리성(Isolation)이 낮은 경우 발생하는 문제점들 (0) | 2023.08.31 |
[SQLD] DELETE, TRUNCATE, DROP 비교 (0) | 2023.08.31 |
Comments