Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Where of Int type column with coalesce
Message
 
General information
Forum:
Microsoft SQL Server
Category:
Stored procedures, Triggers, UDFs
Environment versions
SQL Server:
SQL Server 2005
Miscellaneous
Thread ID:
01437000
Message ID:
01437011
Views:
24
>>>I would write this condition as
>>>
>>>select * from myTable where (@Param1 IS NULL or Col_IntType = @Param1)
>>>
>>>In the first case, the records where Col_IntType are NULL are not returned. In the second case they are returned. If you don't have records with NULL values in your table, then both where expressions will return the exactly same results.
>>
>>Are you saying that the Where clause I posted ("where Col_IntType = COALESCE(@param1, Col_IntType)" will not return records with NULL value? Why not? If @param1 is NULL than the expression will evaluate to Col_IntType = Col_IntType; and wouldn't it be always True regardless of the value in the field?
>
>Yes, this is exactly what I'm saying. Run this simple test to see for yourself:
>
>
>declare @t table (ID int identity(1,1) primary key, intField int NULL)
>
>insert into @t select 1 union select null union select 2
>declare @param int
>set @param = null
>
>select * from @t where IntField  = coalesce(@param,intField)
>select * from @t where (@param IS NULL or intField = @param )
>
>The reason behind is simple.
>
>You can not compare with NULL with =, you need to use IS operator when comparing with NULL.
>
>So, myValue == NULL is incorrect and it would not give you a result even if myValue is NULL, while myValue IS NULL is the correct test and will give you the result.

By the way, your syntax "insert into @t select 1 union select null union select 2" I have never seen before. It is very interesting. I am going to study it to figure out what are you doing here <g>.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform