대부분의 DBMS는 ANSI SQL을 따르고 있기에, 동일 쿼리와 명령어를 통해 원하는 결과값을 얻어낼 수 있다.
그러나, 내장 함수와 같은 추가 기능에 있어서는 각 DBMS에서 사용하는 것에 차이가 존재한다.
대표적으로 Oracle에서 자주 사용되는 'NVL'함수가 그 예이다.
(1) NVL 함수
NVL은 null 값을 다른 값으로 대체할 때 주로 활용된다.
-실제 수행 예시
-- 테이블 생성
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
employee_name VARCHAR2(50),
salary NUMBER
);
-- 데이터 insert
INSERT INTO employees VALUES (1, 'John Doe', 50000);
INSERT INTO employees VALUES (2, 'Jane Smith', NULL);
INSERT INTO employees VALUES (3, 'Bob Johnson', 60000);
-- NVL 함수 활용
SELECT employee_id, employee_name, NVL(salary, 0) AS modified_salary
FROM employees;
| EMPLOYEE_ID | EMPLOYEE_NAME | MODIFIED_SALARY |
|-------------|---------------|------------------|
| 1 | John Doe | 50000 |
| 2 | Jane Smith | 0 |
| 3 | Bob Johnson | 60000 |
(2) 다른 DBMS에서 NVL 사용
여러 DBMS는 각자의 방식으로 NULL 대체를 위한 함수를 제공한다.
때문에, 본인이 사용하는 DBMS에 맞춰 적절한 용법으로 NULL 값을 대체해야 한다.
SELECT ISNULL(column_name, replacement_value) FROM table_name;
SELECT COALESCE(column_name, replacement_value) FROM table_name;
(3) postgresql 에서 NVL 사용하기
다양한 DBMS를 접해본 사용자나, DBMS에 대해 어느정도 지식이 있는 사람들은 위와 같이 DBMS의 차이를 인지하고 적절한 함수를 대체하여 사용한다.
그러나, ORACLE만을 사용해본 사용자 혹은, Migration을 통해 어쩔 수 없이 타 DBMS로 넘어온 시스템의 경우 즉시 대체함수를 사용하기는 어려울 수 있다.
유능한 DBA라면 이러한 상황까지 고려해, 또 한가지의 대책안을 제시할 수 있어야 있다고 생각한다.