Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[처방메모… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?

[처방메모]

번호메모
1아침 2정 저녁 1정
21일 3회 10mL
3필요시 복용
4(null)
SELECT 번호,
       REGEXP_COUNT(메모, '[[:digit:]]+') AS 개수,
       REGEXP_REPLACE(메모, '[[:space:]]', '') AS 정리
  FROM 처방메모
 ORDER BY 번호;
1
번호개수정리
12아침2정저녁1정
231일3회10mL
30필요시복용
40(null)
2
번호개수정리
12아침2정저녁1정
241일3회10mL
30필요시복용
4(null)(null)
3
번호개수정리
12아침2정저녁1정
231일3회10mL
30필요시복용
4(null)(null)
4
번호개수정리
12아침2정 저녁 1정
231일3회 10mL
30필요시복용
4(null)(null)
해설

[[:digit:]]+ 는 숫자가 한 번 이상 이어진 덩어리를 하나로 세므로 1일 3회 10mL 는 1, 3, 10 으로 3개이고, 숫자가 없는 메모는 0 이다.

Oracle REGEXP_REPLACE 는 기본적으로 일치하는 모든 공백을 지우며, 메모가 NULL 인 행은 두 함수 모두 NULL 을 돌려준다.

  • 첫 공백만 지운 결과는 바꾸기가 한 번만 일어난다고 오해한 것이다.
  • 2번째 메모를 4개로 센 결과는 + 를 무시하고 숫자 한 글자씩 센 것이다.
  • NULL 메모의 개수를 0 으로 본 결과는 NULL 입력이 NULL 을 낸다는 점을 놓친 것이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 6회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기