[SQL] 필터링의 기본 2 : in, between, 날짜 변환 함수 (cast, to-char)

Summer·2021년 8월 20일
1

SQL

목록 보기
5/8
post-thumbnail

🔴🟠

1. 🔴 특정 집합에 대한 필터링을 거는 조건문

in ( ) : 원하는 특정 집합을 찾는 조건문
( = where - or - )
not in ( ) : 원하는 특정 집합을 제외하고 찾는 조건문

select *
from
	customer
where
	first_name
in
	(Jennifer, John)
;

=> customer 테이블에서, first_name 컬럼에서
'Jennifer' 혹은 'John'이라는 결과값을 만족하는 모든 row (*) 를 반출한다.

위의 쿼리는 하기 쿼리와 동일하다.

select *
from
	customer
where
	first_name = 'Jennifer"
or
	first_name = 'John'
;

부정으로 사용하는 경우는 다음과 같다.

 select *
 from
 	customer
 where
 	first_name
 not in
 	(Jennifer, John)
 ;
 
 => customer 테이블에서, first_name 컬럼에서
 'Jennifer' 혹은 'John'을 제외한 모든 row (*) 를 반출한다.

2. 🟠 특정 범위 안의 집합을 출력하는 조건문

between - and - : 특정 범위 안의 집합 출력
not between - and - : 특정 범위를 포함하지 않는 집합 출력

select *
from
	customer
where
	customer_id
between
	1 and 100
;

=> customer 테이블에서 customer_id가 1~100 사이인 모든 컬럼(*)을 반출한다.
select *
from
	customer
where
	customer_id
not between
	1 and 100
;
=> customer 테이블에서 customer_id가
1~100 사이인 것을 제외한 모든 컬럼(*)을 반출한다.

* between - and와 함께 자주 쓰이는, 날짜 표현

cast( - as date) : 데이터 타입을 'date'로 변환
to-char( - as YYYY-MM-DD) : number/date 타입을 character 타입으로 변환

  • 두 함수의 성격은 약간 다르나, 두 가지 다 날짜 변환에 사용할 수 있다.
select
	customer_id
from
	payment
where
	cast (payment_date as date)
between
	'2007-02-07' and '2007-02-15'
;

=> ① timestamp 형태의 payment_date 컬럼을 date로 변환한다.
② date로 변환된 payment_date 컬럼에서 '2007-02-07'~'2007-02-15' 사이의
payment 테이블의 customer_id를 출력한다.
select
	customer_id
from
	payment
where
	to-char (payment_date as YYYY-MM-DD)
between
	'2007-02-07' and '2007-02-15'
;

=> ① timestamp 형태의 payment_date 컬럼을 YYYY-MM-DD 형태의 문자열로 변환한다.
② YYYY-MM-DD 형태로 변환된 payment_date 컬럼에서
'2007-02-07'~'2007-02-15' 사이의 payment 테이블의 customer_id를 출력한다.
profile
잠시 쉬어가며 SQL을 공부중인 판교 비개발자의 하루

2개의 댓글

comment-user-thumbnail
2021년 8월 20일

오늘도 열심히군요! 스터디에서 SQL 강의 해주실 의향 있으신가요?

1개의 답글