用户定义的函数在sql server中返回null

Dus*_*usk 4 sql sql-server sql-server-2005 function

我在sql server 2005中创建了一个用户定义的标量函数,我希望它根据传递的参数名称返回id.但是以下函数总是返回null,即使表中已存在传递名称.有人可以告诉我原因吗?

create function IsNameExist(@Name varchar)
returns int
As
Begin
Declare @Id int
Select @Id = ProductId from [Product] where ProductName = @Name
return @Id
End
Run Code Online (Sandbox Code Playgroud)

Mad*_*nan 6

请注意,您没有指定函数参数数据类型的长度.因此,在这种情况下,默认情况下它变为1,并且您在函数内的查询失败.试试看,看看

create function 
IsNameExist(@Name varchar(100)) 
returns int As 
Begin 
Declare @Id int 
Select @Id = ProductId from [Product] where ProductName = @Name 
return @Id 
End 
Run Code Online (Sandbox Code Playgroud)

另请参阅这篇文章 http://beyondrelational.com/blogs/madhivanan/archive/2007/12/04/column-length-and-data-length.aspx