NULL-Related Functions
A summary of the functions available for handling NULL values.
oracle miscconfigurationintermediate
by OracleDba
13 views
A summary of the functions available for handling NULL values.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
DROP TABLE null_test_tab;
CREATE TABLE null_test_tab (
id NUMBER,
col1 VARCHAR2(10),
col2 VARCHAR2(10),
col3 VARCHAR2(10),
col4 VARCHAR2(10)
);
INSERT INTO null_test_tab values (1, 'ONE', 'TWO', 'THREE', 'FOUR');
INSERT INTO null_test_tab values (2, NULL, 'TWO', 'THREE', 'FOUR');
INSERT INTO null_test_tab values (3, NULL, NULL, 'THREE', 'FOUR');
INSERT INTO null_test_tab values (4, NULL, NULL, 'THREE', 'THREE');
COMMIT;
SQL> SELECT * FROM null_test_tab ORDER BY id;
ID COL1 COL2 COL3 COL4
---------- ---------- ---------- ---------- ----------
1 ONE TWO THREE FOUR
2 TWO THREE FOUR
3 THREE FOUR
4 THREE THREE
4 rows selected.
SQL>
SQL> SELECT * FROM null_test_tab WHERE col1 = NULL ORDER BY id;
no rows selected
SQL>
SQL> SELECT * FROM null_test_tab WHERE col1 IS NULL ORDER BY id;
ID COL1 COL2 COL3 COL4
---------- ---------- ---------- ---------- ----------
2 TWO THREE FOUR
3 THREE FOUR
4 THREE THREE
3 rows selected.
SQL>123456789101112
SQL> SELECT id, NVL(col1, 'ZERO') AS output FROM null_test_tab ORDER BY id;
ID OUTPUT
---------- ----------
1 ONE
2 ZERO
3 ZERO
4 ZERO
4 rows selected.
SQL>123456789101112
SQL> SELECT id, DECODE(col1, NULL, 'ZERO', col1) AS output FROM null_test_tab ORDER BY id;
ID OUTPUT
---------- ----------
1 ONE
2 ZERO
3 ZERO
4 ZERO
4 rows selected.
SQL>123456789101112
SQL> SELECT id, NVL2(col1, col2, col3) AS output FROM null_test_tab ORDER BY id;
ID OUTPUT
---------- ----------
1 TWO
2 THREE
3 THREE
4 THREE
4 rows selected.
SQL>123456789101112
SQL> SELECT id, COALESCE(col1, col2, col3) AS output FROM null_test_tab ORDER BY id;
ID OUTPUT
---------- ----------
1 ONE
2 TWO
3 THREE
4 THREE
4 rows selected.
SQL>123456789101112
SQL> SELECT id, NULLIF(col3, col4) AS output FROM null_test_tab ORDER BY id;
ID OUTPUT
---------- ----------
1 THREE
2 THREE
3 THREE
4
4 rows selected.
SQL>1234567891011121314151617181920212223242526272829
SQL> SELECT id, col3 FROM null_test_tab WHERE LNNVL(col1 IS NULL) ORDER BY id;
ID COL3
---------- ----------
1 THREE
1 row selected.
SQL> SELECT id, col3 FROM null_test_tab WHERE LNNVL(col2 = 'TWO') ORDER BY id;
ID COL3
---------- ----------
3 THREE
4 THREE
2 rows selected.
SQL> SELECT id, col3 FROM null_test_tab WHERE LNNVL(col2 != 'TWO') ORDER BY id;
ID COL3
---------- ----------
1 THREE
2 THREE
3 THREE
4 THREE
4 rows selected.
SQL>1234567891011121314151617181920212223242526272829303132333435363738
DROP TABLE nanvl_test_tab;
CREATE TABLE nanvl_test_tab (
id NUMBER,
col1 BINARY_DOUBLE
);
INSERT INTO nanvl_test_tab VALUES (1, 1234.5678);
INSERT INTO nanvl_test_tab VALUES (2, 'INF');
INSERT INTO nanvl_test_tab VALUES (3, '-INF');
INSERT INTO nanvl_test_tab VALUES (4, 'NaN');
COMMIT;
SELECT * FROM nanvl_test_tab ORDER BY id;
ID COL1
---------- ----------
1 1.235E+003
2 Inf
3 -Inf
4 Nan
4 rows selected.
SQL>
SELECT id, col1, NANVL(col1, 0) AS output FROM nanvl_test_tab;
ID COL1 OUTPUT
---------- ---------- ----------
1 1.235E+003 1.235E+003
2 Inf Inf
3 -Inf -Inf
4 Nan 0
4 rows selected.
SQL>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
SELECT id, 'col1=col2'
FROM null_test_tab
WHERE NVL(col1, '!null!') = NVL(col2, '!null!');
ID 'COL1=COL
---------- ---------
3 col1=col2
4 col1=col2
2 rows selected.
SQL>
SELECT id, 'col1=col2'
FROM null_test_tab
WHERE DECODE(col1, NULL, '!null!', col1) = DECODE(col2, NULL, '!null!', col2);
ID 'COL1=COL
---------- ---------
3 col1=col2
4 col1=col2
2 rows selected.
SQL>
SELECT id, 'col1=col2'
FROM null_test_tab
WHERE DECODE(col1, col2, '!match!', col1) = '!match!';
ID 'COL1=COL
---------- ---------
3 col1=col2
4 col1=col2
2 rows selected.
SQL>
SELECT id, 'col1=col2'
FROM null_test_tab
WHERE SYS_OP_MAP_NONNULL(col1) = SYS_OP_MAP_NONNULL(col2);
ID 'COL1=COL
---------- ---------
3 col1=col2
4 col1=col2
2 rows selected.
SQL>Please to add comments
No comments yet. Be the first to comment!