我有很多VB6项目,我将其中一些查询传递给具有“ELSE:”与case语句中使用的冒号的服务器。带有“ELSE:”的SQL Server查询
我想知道有人能告诉我**冒号用于什么吗?它会导致SQL2005及更高版本中的错误,但SQL2000不会造成任何投诉。
我想刚刚从代码&重新编译删除它,但我恐怕它会破坏其他10件事情中的应用..
在此先感谢...
我有很多VB6项目,我将其中一些查询传递给具有“ELSE:”与case语句中使用的冒号的服务器。带有“ELSE:”的SQL Server查询
我想知道有人能告诉我**冒号用于什么吗?它会导致SQL2005及更高版本中的错误,但SQL2000不会造成任何投诉。
我想刚刚从代码&重新编译删除它,但我恐怕它会破坏其他10件事情中的应用..
在此先感谢...
为什么不删除它,重新编译,并测试应用程序,看看它可能有什么影响?
嗯,它会导致SQL2005中的错误?
在SQL服务器中,在case语句中使用ELSE来捕获尚未捕获的任何内容(它与其他所有情况都“堕落”的内容有关)。 For example,假设我们希望列出价格数据库中的一些项目并使用自定义的“预算”文本列对其进行分类,因此对于每个项目,我们将查看它的价格并设置其“预算”值应为:
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
这里的ELSE捕捉到的并非真正属于“昂贵”,“中等”或“廉价”的所有东西。删除这些ELSE在这里肯定会搞砸你的查询。
是的,我知道其他函数是如何...代码(我继承了。换句话说我没有写,我保持它...) 当然,如果我拿出ELSE它会有不同的功能。我的问题是关于COLON。为什么在那里?它的目的是什么? – 2010-06-16 18:52:41
他的问题不是ELSE它与ELSE:请注意在后来的SQL版本中导致sql问题的冒号。 – NotMe 2010-06-16 18:52:44
哦,在这种情况下,我同意@Chris_Lively,这是一个语法,而不是语义问题。 – 2010-06-16 18:54:14
这是处理..有人在您的代码中使用ELSE关键字作为LABEL。
TSQL后跟一个冒号的单词是一个Label。下面是一个示例:
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
在你的情况下,标签可能是“ELSE”
DECLARE @Count int
SET @Count = 0
ELSE:
IF @Count < 33
PRINT ‘Hello World’
SET @Count = @Count + 1
END
IF @Count < 33 GOTO ELSE
我有一种感觉,这个代码将是严重的缩进以及。我几乎愿意为此付出一些钱。
因为在SQL case语句中使用ELSE来捕捉任何未匹配的内容 - 这可能是SQL语句的一大部分。 – 2010-06-16 18:49:58
@ rlb.usa:我知道ELSE做了什么。但是,如果他的陈述选项是他想要移除它,但不确定影响。那么根据定义,他应该删除它并测试影响。这是学习的方式。 – NotMe 2010-06-16 18:52:00
可能最终我会做什么。或者可能是通过代码到调用的地方,复制代码生成的SQL并在企业管理器中尝试看看会发生什么 – 2010-06-16 18:53:54