(sql) Access db(.mdb), MS-SQL, Oracle 에서 각각 Null 값을 체크하는 쿼리 구문 차이 MSSQL_MDB_Oracle

데이타베이스에서 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 이 아닌 경우라고 바로 질의 한다.


덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


통계 위젯 (화이트)

306926
7753
10169536

google_myblogSearch_side

▷검색어

Flag Counter style2