使用“SQL Server查询”;否则:“;

使用“SQL Server查询”;否则:“;,sql,sql-server,case-statement,Sql,Sql Server,Case Statement,我正在维护各种VB6项目,其中一些查询被传递到服务器,并在case语句中使用冒号“ELSE:” 我想知道有人能告诉我冒号是用来做什么的吗?它在SQL2005和更高版本中会导致错误,但SQL2000可以正常工作,没有任何问题 我只想从代码中删除它并重新编译,但我担心它会破坏应用程序中的其他10项功能 先谢谢你 为什么不删除、重新编译并测试应用程序以查看其可能产生的影响?为什么不删除、重新编译并测试应用程序以查看其可能产生的影响?嗯,它会在SQL2005中导致错误 在SQL server中,在cas

我正在维护各种VB6项目,其中一些查询被传递到服务器,并在case语句中使用冒号“ELSE:”

我想知道有人能告诉我冒号是用来做什么的吗?它在SQL2005和更高版本中会导致错误,但SQL2000可以正常工作,没有任何问题

我只想从代码中删除它并重新编译,但我担心它会破坏应用程序中的其他10项功能


先谢谢你

为什么不删除、重新编译并测试应用程序以查看其可能产生的影响?

为什么不删除、重新编译并测试应用程序以查看其可能产生的影响?

嗯,它会在SQL2005中导致错误

在SQL server中,在case语句中使用ELSE来捕获尚未捕获的任何内容(它涉及到“通过”所有其他情况的内容),假设我们想从价格数据库中列出一些项目,并使用自定义的“预算”文本列对它们进行分类,那么对于每个项目,我们将查看其价格并设置其“预算”值:

SELECT title, price,
        Budget = CASE price
         WHEN price > 20.00 THEN 'Expensive'
          WHEN price BETWEEN 10.00 AND 19.99 THEN 'Moderate'
          WHEN price < 10.00 THEN 'Inexpensive'
          ELSE 'Unknown'
        END,
FROM titles
选择标题、价格、,
预算=案例价格
当价格>20.00时,则为“昂贵”
当价格介于10.00和19.99之间时,则“适中”
当价格<10.00时,则“便宜”
其他“未知”
终止
从标题

这里的ELSE捕捉到所有不属于“昂贵”或“适中”或“便宜”的东西。在这里删除这些ELSE肯定会弄乱您的查询。

嗯,它会导致SQL2005中出现错误吗

在SQL server中,在case语句中使用ELSE来捕获尚未捕获的任何内容(它涉及到“通过”所有其他情况的内容),假设我们想从价格数据库中列出一些项目,并使用自定义的“预算”文本列对它们进行分类,那么对于每个项目,我们将查看其价格并设置其“预算”值:

SELECT title, price,
        Budget = CASE price
         WHEN price > 20.00 THEN 'Expensive'
          WHEN price BETWEEN 10.00 AND 19.99 THEN 'Moderate'
          WHEN price < 10.00 THEN 'Inexpensive'
          ELSE 'Unknown'
        END,
FROM titles
选择标题、价格、,
预算=案例价格
当价格>20.00时,则为“昂贵”
当价格介于10.00和19.99之间时,则“适中”
当价格<10.00时,则“便宜”
其他“未知”
终止
从标题

这里的ELSE捕捉到所有不属于“昂贵”或“适中”或“便宜”的东西。在这里删除这些ELSE肯定会把你的查询搞得一团糟。

这就是交易。。有人在代码中使用了ELSE关键字作为标签

TSQL中后跟冒号的单词是一个标签。以下是一个示例:

DECLARE @Count int
SET @Count = 0

ONE_MORE_TIME:
IF @Count <> 33
    PRINT ‘Hello World’
    SET @Count = @Count + 1
END

IF @Count <> GOTO ONE_MORE_TIME
DECLARE@Count int
设置@Count=0
再来一次:
如果数到33
打印“Hello World”
设置@Count=@Count+1
终止
如果@Count转到一次以上
在您的情况下,标签可能是“ELSE”

DECLARE@Count int
设置@Count=0
其他:
如果@Count<33
打印“Hello World”
设置@Count=@Count+1
终止
如果@Count<33转到其他

我有一种感觉,这段代码也将严重缩进。我几乎愿意为此付些钱。

这是交易。。有人在代码中使用了ELSE关键字作为标签

TSQL中后跟冒号的单词是一个标签。以下是一个示例:

DECLARE @Count int
SET @Count = 0

ONE_MORE_TIME:
IF @Count <> 33
    PRINT ‘Hello World’
    SET @Count = @Count + 1
END

IF @Count <> GOTO ONE_MORE_TIME
DECLARE@Count int
设置@Count=0
再来一次:
如果数到33
打印“Hello World”
设置@Count=@Count+1
终止
如果@Count转到一次以上
在您的情况下,标签可能是“ELSE”

DECLARE@Count int
设置@Count=0
其他:
如果@Count<33
打印“Hello World”
设置@Count=@Count+1
终止
如果@Count<33转到其他

我有一种感觉,这段代码也将严重缩进。我几乎愿意为此投入一些资金。

因为在SQL case语句中使用ELSE来捕获任何未匹配的内容,这可能是SQL语句的一大部分。@rlb.usa:我知道还有其他功能。然而,如果他声明的选择是他想移除它,但不确定其影响。。然后根据定义,他应该移除它并测试其影响。这是学习的方法。也许我最终会做什么。或者可能是单步执行代码到调用的位置,复制代码生成的SQL并在Enterprise Manager中尝试,以查看发生了什么,因为在SQL case语句中使用ELSE来捕获任何不匹配的内容—可能是SQL语句的一大部分。@rlb.usa:我知道还有什么可以做。然而,如果他声明的选择是他想移除它,但不确定其影响。。然后根据定义,他应该移除它并测试其影响。这是学习的方法。也许我最终会做什么。或者可能一步一步地将代码复制到调用的位置,复制代码生成的SQL并在Enterprise Manager中尝试,看看发生了什么是的,我知道else如何工作。。。代码(我继承了。换句话说,我没有写它,我维护它…)当然,如果我去掉了ELSE,它的功能就会不同。我的问题是关于冒号的。为什么会有它?它的目的是什么?他的问题不在于其他,而在于其他:请注意冒号,它在以后的sql版本中会导致sql问题。哦,在这种情况下,我同意@Chris_Lively,这是一个语法问题,而不是语义问题。对了,试试看,没有冒号会发生什么,这是我唯一的选择。我也找不到关于冒号的文档…是的,我知道else是如何工作的。。。代码(我继承了。换句话说,我没有写它,我维护它…)当然,如果我去掉了ELSE,它的功能就会不同。我的问题是关于冒号的。为什么会有它?它的目的是什么?他的问题不在于其他,而在于其他:请注意冒号,它在以后的sql版本中会导致sql问题。哦,在这种情况下,我同意@Chris_Lively,这是一个语法问题,而不是语义问题。对了,试试看,没有冒号会发生什么,这是我唯一的选择。我也找不到关于冒号的文档…也可能是那样的。我希望不是。。。现在我需要找一个其他人?和terribl一起