我有sql表,数据如下
SnackID Name
1 Chicken
2 Soda
3 Chocolate
4 IceCream
我有以下用户定义的函数,它接受带有多个值的字符串的参数,如'Chicken','Soda'。
CREATE FUNCTION GetSnackCodes
(
@myValues varchar(max)
)
RETURNS @SnacksCodes TABLE
(
mySnackCoded int NULL
)
AS
BEGIN
insert into @SnacksCodes
select SnackID from Snack where Name In (@myValues)
return ;
END;
GO
当我尝试通过将多个值传递给此变量来调用此函数时,我没有得到预期的结果。 我猜它试图将多个(逗号分隔)值作为单个值进行搜索。
有关如何传递此值的任何其他可能的解决方法?
答案 0 :(得分:4)
您的猜测是正确的 - 当您使用逗号分隔值传递单个字符串时,SQL Server会将其视为单个字符串值。
CREATE TYPE SnackCode As Table (
Name NVARCHAR(50)
);
GO;
CREATE FUNCTION GetSnackCodes (
@myValues SnackCode
)
RETURNS @SnacksCodes TABLE (
mySnackCoded int NULL
)
AS
BEGIN
insert into @SnacksCodes
select SnackID
from Snack
where Name In (select Name from @myValues)
return ;
END;
GO
答案 1 :(得分:2)
您可以拆分逗号分隔值并将其存储在临时表中,然后将该表值结果传递给查询