I stumped the gurus on
SQLServerCentral.com with another challenging
Question of the Day on April 6th, 2009:
Given this code,
DECLARE @val int;
SET @val = -1
CREATE TABLE #empty (val int)
which statement(s) will result in @val being NULL? (select all that apply)
- SET @val = NULL
- SELECT @val = NULL FROM #empty
- SELECT @val = val FROM #empty
- SELECT @val = (SELECT val FROM #empty)
As of today, only about 30% of respondents answered correctly, and judging from the
comments in the discussion section, a lot of them gained a deeper understanding of the concept of null in SQL. I try to make my questions (and answers), tricky enough so as to not be obvious, but my goal isn't to trick people with arcane technicalities - I want to make them aware of certain subtleties of the database engine. This question arose after some unexpected results made me delve into a bit of code, and tested scenarios just like those in the question.
Ok, I haven't gone to look at SQLServerCentral.. But would I be right in saying 1 and 4? The other 2 I think return Null for the Selects but without the assignment occurring for the variable.
ReplyDelete-B
Yes, that's correct. Here's the MSDN link that explains why: http://msdn.microsoft.com/en-us/library/ms187330.aspx
ReplyDelete