null과 ''의 차이.. 0 6 6,816

by 손님 null 널의의미 [2008.12.09 23:19:45]


테스트는 오라클 10g에서했습니다.

컴럼에 테스트를 해보았습니다.

create table test

aaa  varchar2(1)

bbb varchar2(10)


insert into test values(’a’,null);

insert into test values(’b’,’’); //’’작은따옴표사이에는 공백이 없음

insert into test values(’c’,’ ’);//작은따옴표사이에는 공백한칸..

select * from test where bbb is null 하면 결과값은 a,b가 나옵니다.

select nvl(b,"null값만 출력) from test 했을때도

a  "null값만 출력"

b "null값만 출력"

c 공백나옴..

이결과로 봤을때는 오라클에서는  null과 ’’(공백없는 따옴표는 동일시 하는것 같은데요..)

null과 공백없는 따옴표는 다르지 않나요...??

정확한 차이점은 무엇인지요..

그리고 jsp나 php에서

if(bbb == null or bbb=’’) 이렇게 해야 하는것인지..

결과값이 같다면 하나로 동일되어야 하는것 아닌지..

뭐 if(bbb != null) 이렇게 하면 되지만..

궁금해서 함 물어봅니다...

’’공백이 없다고해도 할당될듯하기도 한데..


by 마농 [2008.12.10 08:23:14]
다른 언어와 달리 오라클에서는 ''도 널로 인식합니다.

by 배고파 [2008.12.10 09:50:07]
null, '', ' ' 이 세가지는 엄연히 틀립니다.

by 마농 [2008.12.10 10:12:14]
다른 언어라면 ''과 null은 분명 다릅니다.
하지만 오라클에서만은 ''은 널과 다르지 않습니다.

by 이재현 [2008.12.10 11:46:39]
쪼렙 입니다... : )

재 생각은 ''과NULL은 오라클에선 다르지 않는거 같습니다.

WITH TEST AS(
SELECT NULL A, '1' AS B FROM DUAL UNION ALL
SELECT '' A, '2' AS B FROM DUAL UNION ALL
SELECT ' ' A, '2' AS B FROM DUAL

)
SELECT * FROM TEST
WHERE A IS NULL

by 손님 [2008.12.10 12:54:21]
역시 오라클에서는 null,''이것은 동일시 하는군요..
결국 길이이 0 이면 null로 인식하네요..
언어마다 차이가 있네요..
답변 감사합니다.

by 마농 [2008.12.10 13:04:57]
길이가 0이면 널로 인식한다? 과연 그럴까요?
널은 길이조차도 알수가 없습니다.
SELECT LENGTHB(''), LENGTH(''), VSIZE(''), DUMP('') FROM dual
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입