본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 2> like 연산자를 사용법에 대한 기출문제2

by HYEHYE_SON 2024. 3. 2.
728x90

매일 SQLD 기출 문제 풀기 챌린지


 

[문제2]
다음에 주어진 테이블 SQLD_2 로 다음의 결과를 출력하는 SQL은 ?

 

테이블 SQLD_2
ID NAME
1 ___A
2 B
3 ___C
4 D
5 E
6 ___F

 

결과
ID NAME
1 ___A
3 ___C
6 ___F

 
① select * from SQLD_2 where name like '%%';
② select * from SQLD_2 where name like '%#_%';
③ select * from SQLD_2 where name like '%@_%'  escape '@';
④ select * from SQLD_2 where name like '%%'  escape '';


해설해보기

위의 결과는 SQLD_2테이블에서 
NAME에 언더바(_)가 포함된 사람의
모든 행을 출력하는것을 의미한다.

like와 함께 쓰인 와일드카드(%)는 개수 상관없이 아무거나 와도 된다는 의미이며,
like와 함께 쓰인 언더바(_)는 1개의 자릿수를 나타내고, 이 자리에 뭐가 와도 관계없다는 의미이다.

③, ④ 에 사용된 escape 옵션

escape[특정문자]
특정 문자 바로 다음에 나오는 와일드카드(%) 혹은 언더바(_)는
특수문자로 사용되었다는 것을 알려주는 옵션이다.
특수문자나 공백문자등을 like로 검색하고 싶을 때 escape 옵션을 사용해야한다.

따라서 정답은

 

실행해보기

# 1번

select * from SQLD_2 where name like '%%';

모든 이름이 해당

 

# 2번

select * from SQLD_2 where name like '%#_%';

#이 들어가는 이름이 없기 때문에 출력되는 레코드 없음

 

# 3번

select * from SQLD_2 where name like '%@_%'  escape '@';

 

# 4번

select * from SQLD_2 where name like '%%'  escape '';

ERROR. ORA-01425


관련스크립트

-관련스크립트-

create  table   SQLD_2
(   ID   NUMBER(10),
    NAME  VARCHAR2(20) ) ;

insert   into   sqld_2  values ( 1, '___A');
insert   into   sqld_2  values ( 2, 'B');
insert   into   sqld_2  values ( 3, '___C');
insert   into   sqld_2  values ( 4, 'D');
insert   into   sqld_2  values ( 5, 'E');
insert   into   sqld_2  values ( 6, '___F');

commit;

 

반응형