为什么这个CASE
表达式:
SELECT CASE column
WHEN 'a' THEN '1'
WHEN 'b' THEN '2'
... c -> i
WHEN 'j' THEN '10'
WHEN 'k' THEN '11'
END [col]
FROM LinkedServer.database.dbo.table
Run Code Online (Sandbox Code Playgroud)
产生这个结果?
错误消息:
无法准备消息 8180,级别 16,状态 1,第 1 行语句。
消息 125,级别 15,状态 4,第 1 行
Case 表达式只能嵌套到级别 10。
显然这里没有嵌套CASE
表达式,尽管有 10 多个“分支”。
另一个怪事。这个内联表值函数产生相同的错误:
ALTER FUNCTION [dbo].[fn_MyFunction]
(
@var varchar(20)
)
RETURNS TABLE
AS
RETURN
(
SELECT CASE column
WHEN 'a' THEN '1'
WHEN 'b' THEN '2'
... c -> i …
Run Code Online (Sandbox Code Playgroud) sql-server-2005 sql-server-2008 sql-server sql-server-2000 linked-server