== operator in SQL that yields true if both operands are either null or have the same value?
Here's the truth table for the = operator:
| = | 42 | 13 | null |
| 42 | true | false | null |
| 13 | false | true | null |
| null | null | null | null |
This has some implications. The statement
select * from t where col1 = col2
won't return a record where both col1 and col2 are null.
I suspect that in most cases this is not what the author of such a statement wants. Therefore, they will rewrite the query so:
select * from t
where
( a is null and b is null) or
( a = b)
Now, if there were a == operator with this truth table:
| == | 42 | 13 | null |
| 42 | true | false | false |
| 13 | false | true | false |
| null | false | false | true |
Maybe I am all wrong and there is such a thing somewhere. If you know of such an operater in any database product, please let me know!
No comments:
Post a Comment