데이타베이스에서 Null 값을 체크하는 방법은 제각각이다.
이런 소소한 차이 때문에, 데이타베이스를 변경할 경우에는 쿼리 구문을 일일이 수정을 해주어야 한다.
Null 값을 잘못 제어하면, 웹페이지가 전혀 예상하지 못한 이상한 방향으로 동작할 수 있기 때문에,
Null 값을 체크하는 것은 상당히 중요한 문제다.
Access DB(이하 mdb) 와 MS-SQL, 그리고 Oracle 에서는 Null 값을 체크하는 방법이 다르다.
만약, member 라는 테이블에 name 이라는 컬럼명(필드명)이 있다고 가정하고 select 쿼리를 작성해보자.
쿼리에서 name 이 널값이 아닌 경우를 체크하는 구문이라고 가정하자.
-----------------------------------------------------
mdb 에서는
select * from member where isNull(name)=false
-----------------------------------------------------
ms-sql 에서는
select * from member where isNull(name,'')<>''
-----------------------------------------------------
oracle 에서는
select * from member where name is not null
상황에 따라 아래와 같이 작성될수도 있다.
select * from "member" where "name" is not null
이 쿼리를 jsp 에서 호출하려면 아래와 같이 구문을 작성해야 한다.
String sql = "select * from \"member\" where \"name\" is not null";
-----------------------------------------------------
이라고 작성할 수 있다.
구문에서 보듯이,
mdb 에서는 스크립트를 작성할때 처럼, 그대로 isNull 함수에 넣어서 true 인지 false 인지를 체크한다.
ms-sql 에서는 해당 컬럼의 값이 null 인 경우에 치환할 값을 넣는 쿼리구문을 사용한다.
즉, isNull(name,'') 은 널(null)인 경우에 빈값 즉 '' 로 처리하라는 얘기다.
그래서, 나온 값을 빈값 '' 와 비교하는 구문이 된다.
oracle 에서는 단순하게 name is not null 로 사용하였다.
즉, null 이 아닌 경우라고 바로 질의 한다.
덧글