gpt4 book ai didi

sql - 在存储过程的一个 if 语句中评估不同的条件

转载 作者:行者123 更新时间:2023-12-02 07:43:10 25 4
gpt4 key购买 nike

我有一个正在尝试编写的存储过程,我想一次性评估不同参数的多个条件。最好的语法是什么?

以下是我所拥有的:

AS
BEGIN
DECLARE @GARRISON nvarchar(255)
DECLARE @ASSETTYPE nvarchar(255)
DECLARE @FIVALUE int

IF ( ( @GARRISON IS NOT 'Netheravon'
AND @GARRISON IS NOT 'Ludgershall'
)
AND @INTERRUPT >= 5)
BEGIN

END
ELSE

END

最佳答案

你可以使用。

IF ((@GARRISON != 'Netheravon' AND @GARRISON != 'Ludgershall') )
AND @INTERRUPT >= 5)

这可以缩短为

IF (@GARRISON NOT IN ('Netheravon', 'Ludgershall' )
AND @INTERRUPT >= 5)

你遇到的问题是你有 @variable IS NOT 'constant' - 除非检查空值,否则这不是有效的 SQL 语法。对于平等使用 = , 用于不等式 !=<> (两者都适用于 IIRC)。


编辑:这是我用于测试的确切脚本,并且完全按预期工作。 SQL Server 2008

DECLARE @GARRISON nvarchar(255)
DECLARE @INTERRUPT INT

SET @GARRISON = 'Test'
SET @INTERRUPT = 10


IF (@GARRISON NOT IN ('Netheravon' ,'Ludgershall' )
AND @INTERRUPT >= 5)
BEGIN
SELECT 1
END

当两个条件都评估为真时,上述正确输出“1”。如果我改变 @INTERRUPT到 4,或 @GARRISON到 Netheravon 或 Ludgershall 则没有输出。这正是我所期望的行为。

注意:BEGIN...END 不能为空在 SQL 中阻塞,所以如果它是空的,你会得到错误 Incorrect syntax near 'END'.

关于sql - 在存储过程的一个 if 语句中评估不同的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9017439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com