Ich versuche, etwas wie die unten in WHERE-Klausel in SQL zu erreichen.
if (@zipCode ==null)
begin
([Portal].[dbo].[Address].Position.Filter(@radiusBuff) = 1)
end
else if(@zipCode !=null)
begin
([Portal].[dbo].[Address][email protected] )
end
Ich habe folgendes versucht:
WHERE ((@zipCode IS NOT NULL AND ([Portal].[dbo].[Address][email protected])) OR (@zipCode IS NULL AND ([Portal].[dbo].[Address].Position.Filter(@radiusBuff) = 1)))
was falsch ist. Kann jemand helfen, die genaue Aussage zu gestalten. Vielen Dank!
Die Isnull () - Syntax ist für diese Art von Dingen eingebaut.
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);
Beachten Sie für Ihr Beispiel, dass Sie den Gültigkeitsbereich ändern können, um eine andere Variable für komplexe Boolesche Logik zu definieren. Der einzige Nachteil ist, dass Sie ihn anders umwandeln müssen, wenn Sie nach einem anderen Datentyp suchen müssen. Wenn ich also eine weitere Zeile hinzufüge, aber int von 8 angeben möchte UND auch die Referenz von Text ähnlich wie "repeat", kann ich dies mit einer Referenz auf die "isnull" der ersten Variablen tun, aber einen völlig anderen Ergebnisdatentyp zurückgeben für einen anderen Verweis auf ein anderes Feld.
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 ist die Syntax, die ich für solche Dinge verwende, wenn COALESCE nichts hilft.
Versuchen:
if (@zipCode is null)
begin
([Portal].[dbo].[Address].Position.Filter(@radiusBuff) = 1)
end
else
begin
([Portal].[dbo].[Address][email protected] )
end
Versuchen Sie eine Fallaussage
WHERE
CASE WHEN @zipCode IS NULL THEN 1
ELSE @zipCode
END
if ((wählen Sie VisitCount von PageImage aus, wobei PID = @ pid und PageNumber = 5) NULL ist) begin update PageImage set VisitCount = 1 wobei PID = @ pid und PageNumber = @ pageno end else begin update PageImage set VisitCount = VisitCount + 1 where PID = @ pid und PageNumber = @ pageno enden
mit null kann überprüft werden, ob Nulldaten aus einer Abfrage stammen (siehe folgendes Beispiel)
declare @Mem varchar(20),@flag int
select @mem=MemberClub from [dbo].[UserMaster] where [email protected]
if(@Mem is null)
begin
set @flag= 0;
end
else
begin
set @flag=1;
end
return @flag;