我在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的输出应该是“失败”。但是,查询不会返回任何记录。我哪里错了?
答案 0 :(得分:1)
这是减速问题。
更改
RETURNS varchar
到
RETURNS varchar(50)
你的功能是返回'f'或's'