[DB] NULL, CASE, ESCAPE
2024. 4. 14. 21:45ㆍBE/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_null
가null
이면 대신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 NULL
과 FALSE 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 |