27,579
社区成员
发帖
与我相关
我的任务
分享
CREATE FUNCTION dbo.f_fn(
@str varchar(8000)
)RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @i INT = 1
DECLARE @ret NVARCHAR(MAX)=''
WHILE @i<(LEN(@str))
BEGIN
SELECT @ret += ISNULL((SELECT name FROM T WHERE [code] = SUBSTRING(@str,@i,2))+'/','')
SET @i=@i+2
END
RETURN STUFF(@ret,LEN(@ret),1,'')
END
GO
--测试数据
if not object_id(N'T') is null
drop table T
Go
Create table T([code] nvarchar(22),[name] nvarchar(23))
Insert T
select N'01',N'张三' union all
select N'02',N'李四' union all
select N'03',N'赵五' union all
select N'04',N'钱三' union all
select N'05',N'孙大娘'
GO
if not object_id(N'Tempdb..#T1') is null
drop table #T1
Go
Create table #T1([A] nvarchar(50))
Insert #T1
select N'010203040500000000000000000000' union all
select N'010003000400'
Go
--测试数据结束
SELECT dbo.f_fn(A) AS A FROM #T1