在做人才网时,遇到一个问题,多个职位保存到一个字段里,存的是职位的ID,那么读取出来要变成职位的名字,用数据库怎么实现呢?今天重要实现了,贴出来分享一下。
CREATE FUNCTION [dbo].[GetRowsNameStr](@SourceSql nvarchar(500),@StrSeprate nvarchar(10)) --字符串格式41,56,77,
RETURNS nvarchar(500)
AS
begin
declare @names nvarchar(500)
declare @i int
set @names=’’
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
set @names=@names+(select I_Name from U_Post where ID=convert(int,left(@SourceSql,@i-1)))+’,’
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i) --已经转换好的去掉
set @i=charindex(@StrSeprate,@SourceSql) --重新定位
end
--return @names
if @SourceSql<>’’and @i>=1 --最后一个
begin
set @names=@names+(select I_Name from U_Post where ID=convert(int,left(@SourceSql,@i-1)))
end
if(right(@names,1)=’,’) --去掉后面的逗号
set @names=substring(@names,1,len(@names)-1)
return @names
end
--select I_Name,dbo.GetRowsNameStr(’1,2,3,4,5’,’,’) as ddd from U_Post where ID<3