2010-04-30 6 views
-5

J'ai wriiten une partie du code pour vous et je veux connaître la sortie, j'ai besoin de votre aide car il n'y a pas de corps pour m'aider aussi je pense que la sortie est A, est-ce correct? Merci.quelle est la sortie de ce code?

declare @v1 varchar(20),@v2 varchar(20) 
select @v1 = 'NULL' 
if @v1 is null and @v2 is null 
select 'A' 
else 
select 'B' 

EDITED: aussi quelle est la valeur de @ v2? merci

+0

Pardonnez mon ignorance, mais il pourrait être utile de spécifier quel type de base de données - Oracle, SQL Server, etc. –

+0

Pourquoi ne pas courir et voir? Est-ce que ce sont les devoirs? – Aaronaught

+0

Ça doit être des devoirs ... –

Répondre

0

Je dirais que c'est B parce que = NULL et = 'NULL' sont deux choses différentes.

5

Pourquoi ne pas l'essayer vous-même?

La sortie sera B parce @v1 est attribué une chaîne « NULL » qui n'est pas la même que la valeur NULL spéciale qui signifie « aucune valeur »

+0

+1 C'est aussi ma réponse. –

1

En 2008, il retourne MSSQL B. C'est parce que @ v1 est le chaîne 'NULL', et pas réellement nulle. Si vous modifiez à

select @v1 = null 

Ensuite, il retournera un

+0

quelle est la valeur de @ v2? – user329820

+0

Puisqu'aucune valeur ne lui a été assignée (elle a été déclarée seulement), la valeur de @ v2 est nulle. Alors, à bien y penser, le "select @ v1 = null" est vraiment redondant, puisqu'il est déjà nul pour commencer. –

0

@ v2 est nulle, puisque vous n'assing aucune valeur. La sortie est B 'parce que NULL n'est pas la même que la chaîne' NULL '

Questions connexes