NULL values represent
missing unknown data.
By default, a table column
can hold NULL values.
This section will explain
the IS NULL and IS NOT NULL operators.
SQL NULL Values
If a column in a table is optional, we can insert a new record or
update an existing record without adding a value to this column. This means
that the field will be saved with a NULL value.NULL values are treated differently from other values.
NULL is used as a placeholder for unknown or inapplicable values.
SQL Working with NULL Values
Id
|
LastName
|
FirstName
|
Address
|
City
|
1
|
Navis
|
Anto
|
|
TVL
|
2
|
Ji
|
Bala
|
Bombay
|
TVL
|
3
|
Christopher
|
Franklin
|
|
KK
|
Suppose that the "Address" column in the "Persons" table is optional. This means that if we insert a record with no value for the "Address" column, the "Address" column will be saved with a NULL value.
How can we test for NULL values?
It is not possible to test for NULL values with comparison operators, such as =, <, or <>.
We will have to use the IS NULL and IS NOT NULL operators instead.
SQL IS NULL
We will have to use the IS NULL operator:
SELECT LastName,FirstName,Address FROM
Persons
WHERE Address IS NULL |
The result-set will look like this:
LastName
|
FirstName
|
Address
|
Navis
|
Anto
|
|
Christopher
|
Franklin
|
|
Tip: Always use IS NULL to look for NULL values.
SQL IS NOT NULL
We will have to use the IS NOT NULL operator:
SELECT LastName,FirstName,Address FROM
Persons
WHERE Address IS NOT NULL |
The result-set will look like this:
LastName
|
FirstName
|
Address
|
Ji
|
Bala
|
Bombay
|
In the next chapter we will look at the ISNULL(), NVL(), IFNULL() and COALESCE() functions.
SQL ISNULL(), NVL(),
IFNULL() and COALESCE() Functions
Look at the following "Products" table:
Id
|
ProductName
|
UnitPrice
|
UnitsInStock
|
UnitsOnOrder
|
1
|
Jarlsberg
|
10.45
|
16
|
15
|
2
|
Mascarpone
|
32.56
|
23
|
|
3
|
GorgonzAnto
|
15.67
|
9
|
20
|
Suppose that the "UnitsOnOrder" column is optional, and
may contain NULL values.
We have the following SELECT statement:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products |
In the example above, if any of the "UnitsOnOrder"
values are NULL, the result is NULL.
Microsoft's ISNULL() function is used to specify how we want to
treat NULL values.
The NVL(), IFNULL(), and COALESCE() functions can also be used to
achieve the same result.
In this case we want NULL values to be zero.
Below, if "UnitsOnOrder" is NULL it will not harm the
calculation, because ISNULL() returns a zero if the value is NULL:
SQL Server / MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products |
Oracle
Oracle does not have an ISNULL() function. However, we can use the
NVL() function to achieve the same result:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products |
MySQL
MySQL does have an ISNULL() function. However, it works a little
bit different from Microsoft's ISNULL() function.
In MySQL we can use the IFNULL() function, like this:
SELECT
ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products |
or we can use the COALESCE() function, like this:
SELECT
ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products |
0 comments:
Post a Comment