J'essaie de réaliser quelque chose comme le ci-dessous dans la clause WHERE en SQL.
if (@zipCode ==null)
begin
([Portal].[dbo].[Address].Position.Filter(@radiusBuff) = 1)
end
else if(@zipCode !=null)
begin
([Portal].[dbo].[Address].PostalCode=@zipCode )
end
J'ai essayé ce qui suit:
WHERE ((@zipCode IS NOT NULL AND ([Portal].[dbo].[Address].PostalCode=@zipCode)) OR (@zipCode IS NULL AND ([Portal].[dbo].[Address].Position.Filter(@radiusBuff) = 1)))
ce qui est faux. Quelqu'un peut-il aider à encadrer la déclaration exacte. Merci!
La syntaxe Isnull () est intégrée pour ce genre de chose.
declare @Int int = null;
declare @Values table ( id int, def varchar(8) )
insert into @Values values (8, 'I am 8');
-- fails
select *
from @Values
where id = @Int
-- works fine
select *
from @Values
where id = isnull(@Int, 8);
Pour votre exemple, gardez à l’esprit que vous pouvez changer la portée pour qu’elle soit un autre prédicat d’une variable différente pour une logique booléenne complexe. Le seul inconvénient est que vous devez le convertir différemment si vous devez rechercher un type de données différent. Donc, si j'ajoute une autre ligne mais que je souhaite spécifier int de 8 ET également la référence d'un texte similaire à 'répéter', je peux le faire avec une référence à nouveau à 'isnull' de la première variable tout en renvoyant un type de données de résultat totalement différent pour une référence différente à un champ différent.
declare @Int int = null;
declare @Values table ( id int, def varchar(16) )
insert into @Values values (8, 'I am 8'), (8, 'I am 8 repeat');
select *
from @Values
where id = isnull(@Int, 8)
and def like isnull(cast(@Int as varchar), '%repeat%')
is null est la syntaxe que j'utilise pour de telles choses, quand COALESCE ne sert à rien.
Essayer:
if (@zipCode is null)
begin
([Portal].[dbo].[Address].Position.Filter(@radiusBuff) = 1)
end
else
begin
([Portal].[dbo].[Address].PostalCode=@zipCode )
end
Essayez une déclaration de cas
WHERE
CASE WHEN @zipCode IS NULL THEN 1
ELSE @zipCode
END
est null peut être utilisé pour vérifier si les données null proviennent d'une requête comme dans l'exemple suivant
declare @Mem varchar(20),@flag int
select @mem=MemberClub from [dbo].[UserMaster] where UserID=@uid
if(@Mem is null)
begin
set @flag= 0;
end
else
begin
set @flag=1;
end
return @flag;