未经测试,但有评论。使用变量和游标,所以只会建议如果这不是一个大表,你只做一次。我会很乐意提供更多的解释,如果这并不为你工作:
CREATE TABLE NewTable (Colour varchar(50),SubColour varchar(50))
SELECT Colour, LEN(Colour) - LEN(REPLACE(Colour,'|','')) AS delimCount
INTO #temp FROM [ColourTable]
DECLARE @i int
DECLARE @delimLoc int
DECLARE @Colour varchar(50)
DECLARE @subColour varchar(50)
DECLARE ColourCursor CURSOR FOR SELECT * FROM #temp;
OPEN ColourCursor;
通过表
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM ColourCursor INTO @Colour;
SET @i = 1
SET @delimLoc = 0
IF delimCount > 0
BEGIN
WHILE @i <= delimCount
环路去逐行创建subcolor从最后的位置去使用'|' (或色域的开始。如果@i = 1)
BEGIN
SET @subColour = SUBSTRING(@Colour,@delimLoc+1,CHARINDEX(@Colour,'|',@delimLoc+1))
INSERT INTO NewTable VALUES (@Colour,@subColour)
SET @i = @i + 1
SET @delimLoc = @delimLoc + CHARINDEX(@Colour,'|',@delimLoc+1)
END
END
END
CLOSE ColourCursor
DEALLOCATE ColourCursor;
你“想创造这个”在哪里?你是否问如何创建一个***新表***来规范管道分隔数据?出于某种原因将列添加到现有表中?仅在select语句中?请详细说明 – Kritner
我想从上面第二个表格格式的现有数据创建一个新表格。 – wilsonm2
@ wilsonm2可能会得到符合您的要求的答案 – mohan111