SQL - 在 UDF case 语句中使用逻辑运算符
SQL - Using logical operators in a UDF case statement
所以我花了一段时间才弄清楚如何创建我的第一个 UDF,但在我修复它之后,我认为我的下一个 UDF 将是小菜一碟。不幸的是,情况并非如此。我正在拉一个字段 (ORIG_CLAIM, float),我想对该数字进行分类。这是我的代码:
CREATE FUNCTION [dbo].[fnOC_LEVEL](@ORIG_CLAIM float)
RETURNS nvarchar(255)
AS
BEGIN
DECLARE @result as varchar(255);
SELECT @result = case @ORIG_CLAIM
when < 1000 then 'A_Under 1000'
when >= 1000 and <= 4999.99 then 'B_1000-4999'
when >= 5000 and <= 7499.99 then 'C_5000-7499'
when >= 7500 and <= 9999.99 then 'D_7500-9999'
when >= 10000 and <= 14999.99 then 'E_10000-14999'
when >= 15000 and <= 19999.99 then 'F_15000-19999'
when >= 20000 then 'G_Over 20000'
END
RETURN @result
END
GO
我收到错误 "Incorrect syntax near '<'"。谁能看出我做错了什么?
我认为您可能必须将比较值指定为浮点数。例如:
when < 1.0E3 then 'A_Under 1000'
when >= 1.0E3 and <= 4.99999E3 then 'B_1000-4999'
等等
所以我花了一段时间才弄清楚如何创建我的第一个 UDF,但在我修复它之后,我认为我的下一个 UDF 将是小菜一碟。不幸的是,情况并非如此。我正在拉一个字段 (ORIG_CLAIM, float),我想对该数字进行分类。这是我的代码:
CREATE FUNCTION [dbo].[fnOC_LEVEL](@ORIG_CLAIM float)
RETURNS nvarchar(255)
AS
BEGIN
DECLARE @result as varchar(255);
SELECT @result = case @ORIG_CLAIM
when < 1000 then 'A_Under 1000'
when >= 1000 and <= 4999.99 then 'B_1000-4999'
when >= 5000 and <= 7499.99 then 'C_5000-7499'
when >= 7500 and <= 9999.99 then 'D_7500-9999'
when >= 10000 and <= 14999.99 then 'E_10000-14999'
when >= 15000 and <= 19999.99 then 'F_15000-19999'
when >= 20000 then 'G_Over 20000'
END
RETURN @result
END
GO
我收到错误 "Incorrect syntax near '<'"。谁能看出我做错了什么?
我认为您可能必须将比较值指定为浮点数。例如:
when < 1.0E3 then 'A_Under 1000'
when >= 1.0E3 and <= 4.99999E3 then 'B_1000-4999'
等等