1.新建函数
ALTER FUNCTION [dbo].fn_splitStr( @strSource NVARCHAR(4000),@strSeparator NVARCHAR(10) )
RETURNS @tbResult TABLE(id INT IDENTITY(1,1),rs NVARCHAR(1000))
AS
BEGIN
DECLARE @dwIndex INT,@strResult NVARCHAR(1000),@dwSeparatorLen INT=LEN(@strSeparator);
SET @dwIndex = CHARINDEX(@strSeparator,@strSource);-- 取得第一个分隔符的位置
WHILE @dwIndex>0
BEGIN
SET @strResult = LEFT(@strSource,@dwIndex-1);
INSERT @tbResult VALUES(@strResult);
--将要操作的字符串去除已切分部分
SET @strSource = SUBSTRING(@strSource,@dwIndex+LEN(@dwIndex),LEN(@strSource));
SET @dwIndex = CHARINDEX(@strSeparator,@strSource); --循环量增加
END
--处理最后一节
IF LEN(@strSource) > 0 INSERT @tbResult VALUES(@strSource)
RETURN;
END
2.使用后
3.原sql
select
STUFF((select ',' +ProcessName from mes_Process where ProcessCode in (select rs from fn_splitStr(a.ProcessCode,',')) for xml path('')),1,1,'')ProcessName,
* from [dbo].[mould_MaterialBindMould] a where 1=1