database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9000 게시물 읽기
No. 9000
q] data = null, data is null 시 리턴되는 자료형
작성자
송효진
작성일
2012-06-18 17:53ⓒ
2012-06-18 17:55ⓜ
조회수
9,361

 안녕하세요.

SQL Manager 라는 클라이언트를 사용해보면서 궁금한 점이 생겨 문의해봅니다.

 

data = null 은 잘못된 비교라는 것을 압니다. data is null 로 비교를 해야 하지요.

그런데,

select 'a' = null as a, 'a' is null as b, 'a' is not null as c, null as d, '' as e;

이런 간단한 쿼리로 테스트를 해 보면,

 

 

이런 결과가 나오게 됩니다.

보시다시피 a 는 null 도 아니고 boolean 도 아니고 빈문자열도 아닙니다.

이게 뭔가요?

쿼리짜는데 알 필요는 없지만 그냥 궁금합니다. ㅎㅎ

 

감사합니다.

이 글에 대한 댓글이 총 4건 있습니다.

 select 'a' = null  as a

a column 의 값은 문자열 'a'인데 이것이 null 하고 같은가? 라고 물었으니, 답은 null 입니다. 

 

select 'a' is null as b

문자열 'a' 값을 가진 b column 이 null 인가? 라고 물었으니, 답은 false 입니다. 

 

select 'a' is not null as c

c column의 값은 문자열 'a' 인데 이것이 not null인가?  라고 물었으니, 답은 true 입니다. 

 

select null as d

d column 의 값은 null 이다.

 

이렇게 됩니다.

select '' as e

e column 의 값은 ''(빈 문자열)이다. 

 

 

 

김상기(ioseph)님이 2012-06-19 11:29에 작성한 댓글입니다.

첨부된 그림의 a 와 d 의 결과를 봐주세요.

d 는 null 이 맞지만 a 의 결과는 null 이 아닙니다.

그래서 그게 궁금한거고요.^^

송효진님이 2012-06-19 15:25에 작성한 댓글입니다.
이 댓글은 2012-06-19 15:26에 마지막으로 수정되었습니다. Edit

SQL Manager 버그 같네요.

-- 해당 쿼리를 테이블로 만들었고,
postgres=# create table zz as select 'a' = null as a;
SELECT 1
Time: 2.720 ms
-- 그 테이블로 만들어지는 칼럼의 자료형을 확인 했고,
postgres=# \d zz
      Table "public.zz"
 Column |  Type   | Modifiers
--------+---------+-----------
 a      | boolean |
-- false 인 row를 찾았으나 없고,
postgres=# select * from zz where a = false;
 a
---
(0 rows)
-- true 인 row를 찾았으나 없고, 
Time: 0.321 ms
postgres=# select * from zz where a = true;
 a
---
(0 rows)

Time: 0.220 ms
-- is null 인 자료를 찾으니까 나오네요.
postgres=# select * from zz where a is null;
 a
---

(1 row)

Time: 0.181 ms
김상기(ioseph)님이 2012-06-19 22:51에 작성한 댓글입니다.

 감사합니다.^^

송효진님이 2012-06-20 14:36에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
9003복구할대요 테이블 생성이 안됩니다. [2]
김선희
2012-06-28
11167
9002pg_restore 할때요 [2]
김선희
2012-06-27
8736
9001Greenplum 에 대해서요 [2]
김선희
2012-06-26
10507
9000q] data = null, data is null 시 리턴되는 자료형 [4]
송효진
2012-06-18
9361
8998PostgreSQL와 오라클 비교 부탁드립니다. [1]
이선영
2012-05-30
12208
8996Libeay32.dll 오류 [2]
구자은
2012-05-22
10810
8995현재 관리하고 있는 사이즈가 어떻게 되시나요? [1]
박병훈
2012-05-22
8953
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다