The distinction between the empty set and the number
is similar to that between
NULL and ZERO. For example, the set of real solutions (or informally "the solution") to is
, but the solution to
is
.
In my mind there is no need for a concept like NULL in mathematics if you think of NULL as in NULL-pointers.
NULL in this sense is a technical necessity because you cannot un-define a variable: Once a variable has been assigned a value, a certain bit of memory is reserved for this variable and this memory is marked as re-usable only if the variable goes out of scope (simplified speaking).
You cannot say "The variable with this name doesn't exist anymore." without letting it go out of scope, because that would make language interpretation much more complicated without many benefits. Therefore, to indicate that the value of the variable has no meaning, one uses NULL.
What NULL stands for in the end depends upon the programming language: In some it is a special keyword, but in some it is also just a different name for the integer .
You can assign an arbitrary value to NULL in mathematics as mentioned in the other replies (,
, etc.) but as mathematics has nothing to do with memory allocation there is really no need for such a thing as
NULL.
Videos
What is a null matrix?
What are the types of matrices?
Can a zero matrix be a rectangular matrix?
As per your question the expected results would be as below.
SELECT LENGTH,BREADTH,LENGTH*BREADTH AS CALC_AREA FROM AREA;
LENGTH BREADTH CALC_AREA
20
30 0 0
21.2 1 21.2
For any(first) record in SQL SERVER if you do computation with NULL the answer would be NULL.
For any(second) record in SQL SERVER, if you do product computation between a non-empty value and an empty value the result would be zero as empty value is treated as zero.
For any(third) record in SQL SERVER, if you do computation between two non-empty data type values the answer would be a NON-EMPTY value.
Check SQL Fiddle for reference - http://sqlfiddle.com/#!3/f250a/1
That blank Breath (second row) cannot happen unless Breath is VARCHAR. Assuming that, the answers will be:
NULL (since NULL times anything is NULL)
Throws error (since an empty string is not a number. In Sql Server, the error is "Error converting data type varchar to numeric.")
21.20 (since in Sql Server, for example, conversion to a numeric type is automatic, so
SELECT 21.2 * '1'returns 21.20).
From MSDN:
The predefined unary and binary operators and any user-defined operators that exist for value types may also be used by nullable types. These operators produce a null value if the operands are null; otherwise, the operator uses the contained value to calculate the result.
That's why all the test are passed, including the last one - no matter what the operand value is, if another operand is null, then the result is null.
The operators for Nullable<T> are so-called "lifted" operators]; the c# compiler takes the operators available for T and applies a set of pre-defined rules; for example, with +, the lifted + is null if either operand is null, else the sum of the inner values. Re the last; again, division is defined as null if either operand is null - it never performs the division.