본문 바로가기
DB/ORACLE

day24) [Oracle] 대소문자 구별 없이 모두 검색(AND, OR, LOWER, UPPER, NOT, IN)

by code_learner 2022. 1. 28.

[테이블 생성]

대소문자 구분없는 데이터 생성

create table fruit(
	name varchar(20) not null,
	price int default 0,
	cnt int default 0
);

insert into fruit values('ApplE', 1000, 3);
insert into fruit values('APPLE', 1100, 4);
insert into fruit values('apple', 1200, 5);
insert into fruit values('banana', 1200, 6);
insert into fruit values('coconut', 1300, 5);
insert into fruit values('grape', 900, 7);

 

 

[AND]

-n가지 조건이 모두 충족되는 정보를 출력한다.

-AND연산자는 WHERE 절 뒤에 원하는 만큼 추가하여 정보를 가공할 수 있다.

select * from fruit where price>= 1000 and name like '%p%';

 

 

[OR]

-n가지 조건 중 한가지라도 만족 하는 정보를 출력

select * from fruit where price <= 1000 or cnt >=6;

 

*AND연산자는 OR연산자보다 우선순위에 있으므로 정확한 값을 얻기 위해선 ( )를 사용하는 것이 좋다

 

 

[IN]

-WHERE절 내에서 특정값 여러개를 선택하는 SQL 연산자

-괄호 내의 중 일치하는 것이 있으면 TRUE

-괄호내에 select등을 이용한 다양한 조건을 넣어 값을 추출할 수 있다

select * from fruit where name in ('banana','grape');
select * from fruit where cnt in (6,7);
select * from fruit where cnt in (6,(select max(cnt) from fruit));

 

 

[NOT]

-바로 뒤에오는 조건을 부정하는 역할

-다른 연산자와는 달리 필터링 할 열의 앞에 사용된다.

select * from fruit where not cnt = 5;
select * from fruit where not cnt in (3,5);

 

 

 

[LOWER, UPPER]

- 조건을 대문자/소문자로 바꿔주는 역할

- 테이블 내 특정문자를 조회할 경우 대문자 또는 소문자 관계없이 검색하기 위해 필요하다.

select * from fruit where lower(name) like lower('%pp%');
select * from fruit where upper(name) like upper('%pp%');

 

 

 

[문제]

-다음의 테이블에서 e(E)가 들어가지않은 과일의 이름과 가격만을 출력하세요.

select name, price from test where lower(name) not like lower('%e%');

댓글