본문 바로가기
데이터베이스/SQL

자주쓰는 WHERE문 정리

by 코이킹 2023. 7. 16.
반응형

1. 숫자 자료형 Select시 사용하는 Where조건 

1)  일치 / 불일치 하는 값 가져오기 

# 일치 
WHERE EMPLOYEE_ID = 101;
# 불일치
WHERE EMPLOYEE_ID != 105
WHERE EMPLOYEE_ID <> 105

2) 범위의 값을 가져오기   

WHERE EMPLOYEE_ID > 105 AND EMPLOYEE_ID <= 110;
# BETWEEN 값1 AND 값2도 같은기능을 함. (<=, >=와 같음. <, >가 아님)  
WHERE EMPLOYEE_ID BETWEEN 106 AND 110;

3) 여러값 중에 일치 / 불일치하는 값을 가져오기  

WHERE EMPLOYEE_ID IN(105, 106, 107);
값이 105,106,107인 행을 가져오기 
WHERE EMPLOYEE_ID NOT IN (105, 106, 107);
값이 105,106,107이 아닌 행을 가져오기 
WHERE EMPLOYEE_ID IN (
    SELECT e1.EMPLOYEE_ID
    FROM EMPLOYEES e1
    WHERE ROWNUM <= 10
);
Select의 결과에 해당하는 행을 가져오기 

 

 

2. 문자 자료형 Select시 사용하는 Where조건

1)  일치 / 불일치(문자열의 경우 싱글쿼테이션으로 감싸주어야한다.)

# 일치
WHERE FIRST_NAME = 'Steven';
# 불일치
WHERE FIRST_NAME != 'Steven';
WHERE FIRST_NAME <> 'Steven';

 

2) 패턴 검색(LIKE)

※ 언더바 ( _ )의 경우 문자 하나를 의미하며, 퍼센트는 (%)없거나 하나이상을 의미함 

※ 숫자자료형에서도 같은 방식으로 사용가능

WHERE FIRST_NAME LIKE 'S%';
 S로 시작함
WHERE FIRST_NAME LIKE '%s';
 s로 끝남
WHERE FIRST_NAME LIKE '%am%';
 am이 포함됨
WHERE FIRST_NAME LIKE '%m%e%';
m이 포함되고 e가 포함되며, m과 e사이에 길이제한 없는 임의 의 문자가 오거나 오지 않음.
WHERE FIRST_NAME LIKE 'J____';
J로 시작하는 5문자
WHERE FIRST_NAME LIKE 'J____%';
J로 시작하는 5문자 이상
WHERE FIRST_NAME LIKE '_e%_';
2번째 문자가 e로 시작하는 3문자 이상

 

3) 정규 표현식 사용 (REGEXP_LIKE)

※ 코딩시 자주 사용하는 정규표현식을 SQL에서도 사용가능 

WHERE REGEXP_LIKE(LAST_NAME, '*[e]{2}*[y]$');
0개이상문자반복후, 문자e가 2번반복후 0개이상문자반복후 문자 y로 끝나는 값
WHERE REGEXP_LIKE(EMPLOYEE_ID, '*[1]{2}');
0개이상문자반복후, 숫자1이 2번반복하는 값

 

3. 날짜 / 시간 자료형 Select 시 사용하는 Where 조건 

1)  일치 / 불일치(TO_DATE를 사용해서 날짜형식으로 변경해주어야함.)

※ 현재 날짜 : SYSDATE

※ 날짜 데이터를 Where에 수동입력으로 지정하기 위해서는 문자열을 TO_DATE함수를 사용하여 날짜형식을 데이터로 변환해야함.

WHERE HIRE_DATE = TO_DATE('2003-06-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS');
값이 2023-06-17인 행을 가져오기 
WHERE HIRE_DATE != TO_DATE('2003-06-17', 'YYYY-MM-DD');
값이 2023-06-17이 아닌 행을 가져오기

 

2) 범위의 값을 가져오기   

WHERE HIRE_DATE > TO_DATE('2003-06', 'YYYY-MM') AND HIRE_DATE < TO_DATE('2008-06', 'YYYY-MM')
값이 2003-06 ~ 2008-06 사이의 행을 가져오기 
WHERE HIRE_DATE
BETWEEN TO_DATE('20030601000000', 'YYYYMMDDHH24MISS')
AND
TO_DATE('20050601000000', 'YYYYMMDDHH24MISS');
값이 2003-06-01 ~ 2008-06-01 사이의 행을 가져오기 

 

반응형

'데이터베이스 > SQL' 카테고리의 다른 글

JOIN 정리  (0) 2023.07.22
GROUP BY 절 정리  (0) 2023.07.22

댓글