Beste medetweakers,
Een query van mij reageert niet zoals ik zou verwachten. Ik maak gebruik van MsSQL 2000 met SP4. Ik heb mijn probleem vereenvoudigd naar de volgende query's:
dit is het resultaat van de query:
Waneer is de optie ANSI_NULLS uit staat, verwacht ik wanneer ik de waarde NULL vergelijk met de waarde 3 deze twee waardes al verschillend worden gezien. Dit doet MsSQL alleen bij de niet gecaste NULL. Erg vreemd, want een CAST(NULL as INT) is gewoon gelijk aan NULL.
Wat is hier de verklaring voor? Dit is mijns inziens niet in lijn met de documentatie zoals op http://msdn.microsoft.com...ary/aa259229(SQL.80).aspx
Een query van mij reageert niet zoals ik zou verwachten. Ik maak gebruik van MsSQL 2000 met SP4. Ik heb mijn probleem vereenvoudigd naar de volgende query's:
SQL:
1
2
3
4
5
6
7
8
9
10
| -- Vergelijkingen met een NULL waarde resulteren niet met deze optie niet standaard in FALSE SET ANSI_NULLS OFF PRINT 'Zou moeten resulteren in een 1 wanneer een naar INT gecaste NULL niet gelijk is aan de waarde 3' SELECT 1 WHERE CAST(NULL AS INT) <> 3 PRINT 'Zou moeten resulteren in een 1 wanneer NULL niet gelijk is aan de waarde 3' SELECT 1 WHERE NULL <> 3 |
dit is het resultaat van de query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| Zou moeten resulteren in een 1 wanneer een naar INT gecaste NULL niet gelijk is aan de waarde 3
-----------
(0 row(s) affected)
Zou moeten resulteren in een 1 wanneer NULL niet gelijk is aan de waarde 3
-----------
1
(1 row(s) affected) |
Waneer is de optie ANSI_NULLS uit staat, verwacht ik wanneer ik de waarde NULL vergelijk met de waarde 3 deze twee waardes al verschillend worden gezien. Dit doet MsSQL alleen bij de niet gecaste NULL. Erg vreemd, want een CAST(NULL as INT) is gewoon gelijk aan NULL.
Wat is hier de verklaring voor? Dit is mijns inziens niet in lijn met de documentatie zoals op http://msdn.microsoft.com...ary/aa259229(SQL.80).aspx
Ik objecteer, u eer.