我有如下所示的 varchar 值
72,73,74
我尝试拆分为逗号,之后我想转换为 int 以上值。比我想匹配 Id 与我的用户表。
CREATE FUNCTION Fn_MyFunction(@MyUserIdValues VARCHAR(100))
RETURNS VARCHAR(300) AS
BEGIN
DECLARE @Result VARCHAR(300) = ''
Select UserName From UserTable
Where MyUserIdValues=UserIdValues
RETURN @Result
@Result 必须在一列中如下所示
Joe,Michael,Ricky
我们将不胜感激。
谢谢。
最佳答案
这样做的经典方式...
/*
create table Users
(
id int,
name nvarchar(max)
)
insert into Users
values
(72, 'Joe'),
(73, 'Michael'),
(74, 'Ricky'),
(75, 'Manny'),
(76, 'Bob')
*/
CREATE FUNCTION dbo.Fn_MyFunction(@IdValues VARCHAR(100))
RETURNS NVARCHAR(max) AS
BEGIN
DECLARE @Result NVARCHAR(max);
DECLARE @delimiter as nchar = ',';
WHILE LEN(@IdValues) <> 0
BEGIN
Declare @CurrentId int;
If CHARINDEX(@delimiter, @IdValues) = 0
begin
Set @CurrentId = cast(@IdValues as int);
Set @IdValues = ''
End
Else
begin
Set @CurrentId = cast(left(@IdValues, charindex(@delimiter, @IdValues) -1) as int)
Set @IdValues = Substring(@IdValues, charindex(@delimiter, @IdValues) +1, len(@IdValues))
End
select @Result = Isnull(@Result + ',', '') + Isnull((Select Name From Users Where Id=@CurrentId),'(unknown)')
END
RETURN @Result
END
GO
Select dbo.Fn_MyFunction('72,73,74')
--Joe,Michael,Ricky
Select dbo.Fn_MyFunction('72,0,74')
--Joe,(unknown),Ricky
Select dbo.Fn_MyFunction('72,73,72,74,74')
--Joe,Michael,Joe,Ricky,Ricky
关于mysql - 用于列表的 Ms Sql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19151873/