27,579
社区成员
发帖
与我相关
我的任务
分享
ALTER FUNCTION [dbo].[F_aaaaaaaaa](@c VARCHAR(2000))
returns VARCHAR(1024)
AS
BEGIN
DECLARE @str VARCHAR(2000)
WHILE( Charindex('→', @c) <> 0 )
BEGIN
SET @str= @str + (SELECT WoProName FROM Tb_WorkingProcedure WHERE WoProID = Substring(@c, 1, Charindex('→', @c) - 1) OR FastInput = Substring(@c, 1, Charindex('→', @c) - 1))
SET @c = Stuff(@c, 1, Charindex('→', @c), '')
END
SET @str=@str+ (SELECT WoProName FROM Tb_WorkingProcedure WHERE WoProID = @c OR FastInput = @c)
RETURN @str
END
ALTER FUNCTION [dbo].[F_aaaaaaaaa] ( @c VARCHAR(2000) )
RETURNS VARCHAR(1024)
AS
BEGIN
SET @c='→'+@c+'→'
SELECT @c=REPLACE(REPLACE(@c,'→'+WoProID+'→','→'+WoProName+'→'),'→'+FastInput+'→','→'+WoProName+'→')
FROM Tb_WorkingProcedure
WHERE @c LIKE '%→'+WoProID+'→%' OR @c LIKE '%→'+FastInput+'→%'
RETURN (SUBSTRING(@c,2,LEN(@c)-2));
END;
ALTER FUNCTION [dbo].[F_aaaaaaaaa] ( @c VARCHAR(2000) )
RETURNS VARCHAR(1024)
AS
BEGIN
DECLARE @str VARCHAR(2000)= '' ,
@i INT= 1 ,
@j INT;
SELECT @c = @c + '→' ,
@j = CHARINDEX('→', @c, @i);
WHILE @j > 0
BEGIN
SELECT @str = @str + '→' + WoProName
FROM Tb_WorkingProcedure
WHERE WoProID = SUBSTRING(@c, @i, @j - @i)
OR FastInput = SUBSTRING(@c, @i, @j - @i);
SELECT @i = @j + 1 ,
@j = CHARINDEX('→', @c, @i);
END;
SET @str = STUFF(@str, 1, 1, '');
RETURN @str;
END;
GO
ALTER FUNCTION [dbo].[F_aaaaaaaaa] ( @c VARCHAR(2000) )
RETURNS VARCHAR(1024)
AS
BEGIN
DECLARE @str VARCHAR(2000)='';
SET @str=STUFF((SELECT '→'+WoProName FROM Tb_WorkingProcedure WHERE '→'+@c+'→' LIKE '%→'+WoProID+'→%' OR '→'+@c+'→' LIKE '%→'+FastInput+'→%' FOR XML PATH('')),1,1,'')
RETURN @str;
END;
WoProID WoProName
------- --------------------------------------------------
01 aa
02 bb
03 ab
04 cd
05 dad
06 dasdf
07 dda
08 sdf
SELECT [dbo].[F_aaaaaaaaa] ('01→02→03→04→06→07→08')
想返回下面结果
'aa→bb→ab→cd→dasdf→dda→sdf