标量UDF不返回预期值

时间:2014-10-09 22:47:07

标签: sql sql-server

我在SSMS 2012工作。我有以下标量UDF:

CREATE FUNCTION [dbo].[test] (@input nvarchar)
RETURNS nvarchar
AS
BEGIN
    DECLARE @output nvarchar
    SET @output = CASE
        WHEN @input IS NULL THEN 'failure'
        WHEN @input = '' THEN 'failure'
        ELSE 'success'
    END
    RETURN @output
END

我必须授予它权限。所以,我输入:

GRANT EXECUTE ON [dbo].[test] TO Public

我在以下查询的WHERE子句中调用此UDF:

SELECT
Col1
FROM some_table
WHERE
[dbo].[test](Col2) = 'failure'

在some_table中,我知道Col2的记录为NULL。因此,这些记录应该已经返回,因为UDF的输出应该是“失败”。但是,查询不会返回任何记录。我哪里错了?

1 个答案:

答案 0 :(得分:1)

这是减速问题。

更改

RETURNS varchar

RETURNS varchar(50)

你的功能是返回'f'或's'