일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
- Java
- pdo
- WebClient
- bootstrap
- angularjs
- 외국인 노동자
- node.js
- Spring
- maven
- SQLite
- 개발자 이야기
- JavaFX
- spring boot
- Python
- javadoc
- gradle
- build tool
- Ajax
- webflux
- RSocket
- mybatis
- swift
- SQL
- Eclipse
- php
- Apache
- Linux
- jquery
- 일본
- xml
- Today
- 123
- Total
- 3,697,220
슬기로운 개발자 생활
[SQLite] 함수 - 값이 NULL인 경우에 지정된 다른 값을 반환 (ifnull 함수, coalesce 함수) 본문
[SQLite] 함수 - 값이 NULL인 경우에 지정된 다른 값을 반환 (ifnull 함수, coalesce 함수)
개발자 너부리 2019. 11. 19. 00:25ifnull 함수를 사용하면 첫 번째 인수의 값이 NULL 인 경우 두 번째 인수의 값을 반환해 준다. coalesce 함수도 동일하게 동작한다. 여기에서는 ifnull 함수 및 coalesce 함수의 사용법에 대해 설명한다.
ifnull 함수와 coalesce 함수 사용법
ifnull 함수는 첫 번째로 지정된 인수의 값이 NULL 인 경우에 두 번째 인수의 값을 반환한다. 형식은 다음과 같다.
ifnull(값1, 값2)
coalesce 함수는 첫번째부터 n-1번째 인수의 값 중 처음 NULL이 아닌 값을 반환한다. 모든 NULL인 경우에는 마지막 n번째 인수의 값을 반환한다. 형식은 다음과 같다.
coalesce (값1, 값2, ..., n값)
ifnull 함수는 coalesce 함수에 인수를 2개로 한 경우와 동일하다.
--
그러면 실습을 해보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.
create table user (id integer, name text, address text);
sqlite> create table user (id integer, name text, address text);
sqlite>
INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.
insert into user values (1, 'devkuma', 'Seoul');
insert into user values (2, 'kimkc', NULL);
insert into user values (3, 'araikuma', 'Busan');
insert into user values (4, NULL, 'Paju');
insert into user values (5, NULL, NULL);
sqlite> insert into user values (1, 'devkuma', 'Seoul');
sqlite> insert into user values (2, 'kimkc', NULL);
sqlite> insert into user values (3, 'araikuma', 'Busan');
sqlite> insert into user values (4, NULL, 'Paju');
sqlite> insert into user values (5, NULL, NULL);
sqlite>
그러면 ifnull 함수를 사용하여 name 컬럼에 저장되는 값이 NULL아 아닌 경우는 name 컬럼의 값을 반환하고 NULL 인 경우에 'NoName'를 반환하려고 한다.
select id, ifnull(name, 'NoName') from user;
sqlite> .mode column
sqlite> .header on
sqlite>
sqlite> select id, ifnull(name, 'NoName') from user;
id ifnull(name, 'NoName')
---------- ----------------------
1 devkuma
2 kimkc
3 araikuma
4 NoName
5 NoName
sqlite>
name 컬럼에 NULL이 아닌 값이 저장되어 있으면 그 값을 반환하고 NULL 인 경우에는 지정한 값을 반환하였다.
다음은 coalesce 함수를 사용하여 name 컬럼에 저장되는 값이 NULL이 아닌 경우에 name 컬럼의 값을 반환하고, name 컬럼의 값이 NULL 인 경우에는 address 컬럼 값를 반환하며, address 컬럼의 값이 NULL이 아닌 경우에는 address 컬럼의 값을 NULL 인 경우에는 'NoName'를 반환하려고 한다.
select id, coalesce(name, address, 'NoName') from user;
sqlite> select id, coalesce(name, address, 'NoName') from user;
id coalesce(name, address, 'NoName')
---------- ---------------------------------
1 devkuma
2 kimkc
3 araikuma
4 Paju
5 NoName
sqlite>
name 컬럼과 address 컬럼의 값을 조회하여 먼저 NULL이 아닌 값을 받아오고, 모두 NULL 인 경우에는 지정한 값을 받아올 수 있었다.
'IT 개발 > SQLite' 카테고리의 다른 글
[SQLite] 함수 - 마지막에 추가된 데이터의 ROWID 를 반환 (last_insert_rowid 함수) (0) | 2019.11.19 |
---|---|
[SQLite] 함수 - 지정한 값과 같으면 NULL을 반환 (nullif 함수) (0) | 2019.11.19 |
[SQLite] 함수 - B데이터베이스 연결 후 실행된 SQL 문에 의해 수정/삭제/추가 된 행의 총수를 조회 (total_changes 함수) (0) | 2019.11.19 |
[SQLite] 최근 실행된 SQL 문에 의해 수정/삭제/추가된 행수 구하기 (changes 함수) (0) | 2019.11.19 |
[SQLite] 함수 - 지정한 바이트의 BLOB 타입 0x00 값을 생성 (zeroblob 함수) (0) | 2019.11.19 |
- Tag
- SQLite