SQL 分割字符串函数 (sqlserver不自带)
create FUNCTION [dbo].[GetSplitStringValueInIndex] ( @originalStr VARCHAR(1024), @split VARCHAR(10), @index INT ) RETURNS VARCHAR(1024) AS BEGIN DECLARE @location INT; DECLARE @start INT; DECLARE @next INT; DECLARE @seed INT; SET @originalStr = LTRIM(RTRIM(@originalStr)); SET @start = 1; SET @next = 1; SET @seed = LEN(@split); SET @location = CHARINDEX(@split, @originalStr); WHILE @location <> 0 AND @index > @next BEGIN SET @start = @location + @seed; SET @location = CHARINDEX(@split, @originalStr, @start); SET @next = @next + 1; END IF @location = 0 BEGIN SELECT @location = LEN(@originalStr) + 1; END RETURN SUBSTRING(@originalStr, @start, @location -@start); END
分割后求并集
select * from ( select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',1) 主机厂代码,主机市场 from 常用产品Test union select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',2) 主机厂代码,主机市场 from 常用产品Test union select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',3) 主机厂代码,主机市场 from 常用产品Test union select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',4) 主机厂代码,主机市场 from 常用产品Test union select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',5) 主机厂代码,主机市场 from 常用产品Test union select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',6) 主机厂代码,主机市场 from 常用产品Test union select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',7) 主机厂代码,主机市场 from 常用产品Test union select 产品代号,[dbo].[GetSplitStringValueInIndex](主机厂代码,'/',8) 主机厂代码,主机市场 from 常用产品Test ) xx where 产品代号='B08601000'
本文来自博客园,作者:CelonY,转载请注明原文链接:https://www.cnblogs.com/CelonY/articles/16938032.html
浙公网安备 33010602011771号