[DB] NULL, CASE, ESCAPE

2024. 4. 14. 21:45BE/DB

1. NULL

 

DBMS에서 null는 "값을 알 수 없음"을 의미한다.

 


가. IS NULL

 

null는 "값을 알 수 없음"을 의미한다.

 

select * 
from ta
where can_be_null = null;

그래서 다음과 같은 방식으로 null인 row를 찾을 수 없다.

 

select * 
from ta
where can_be_null is null;

null 값을 찾고 싶다면 = null이 아닌 is null 을 사용할 것.

 

select * 
from ta
where can_be_null is not null;

is not null도 가능한다.

 


나. IFNULL()

select IFNULL(can_be_null, 0)
from ta;
  • IFNULL(can_be_null, 0) : can_be_nullnull이면 대신 0

 


다. NULLIF()

select NULLIF(value_1, value_2)
from ta;
  • NULLIF(value_1, value_2) : value_1 = value_2가 참이면 NULL 그렇지 않으면 value_1 반환.

 


라. null 논리연산

 

값을 알 수 없다는 것은 TRUE일 수도 FALSE일 수도 있다는 것이다.

 

TRUE OR NULLFALSE AND NULL 같이 NULL에 상관없이 참과 거짓이 결정되는 경우를 제외하면 NULL의 논리연산의 결과는 NULL이다.

 

의미 그래로 참, 거짓을 알 수 없다.

 


2. CASE문

SELECT
  CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE result3
  END AS column_name
FROM table_name;
  • 만약 condition1이 참이면 result1을 반환
  • 만약 condition2가 참이면 result2를 반환
  • 어떤 조건도 참이 아니면 result3를 반환

 


3. 이스케이프

select * from ta where b like '100%';
select * from ta where b like '100!%' escape '!'
  • ‘100%’ : %는 모든 문자열을 일치시키는 와일드카드.
  • '100!%' escape '!' : !를 이스케이프 문자로 정의. 정확히 '100%'를 의미.

 


추가로 “문자열“보다는 '문자열'를 사용해라.

 

DBMS에 따라서 "문자열"를 사용할 수 없는 경우도 있다.

 

'BE > DB' 카테고리의 다른 글

[DB] SET Operator  (0) 2024.04.14
[DB] 내장함수  (0) 2024.04.14
[SQL] SQL 예시 정리  (0) 2023.08.29
[mySQL] 사용자 추가, 권한 부여,삭제  (0) 2023.07.04
[DB] 정규화  (0) 2022.06.06