表中有列为如下显示text类型
1=1,2=2,4=58,9=57
想转换成行显示,同时把=和后面的数字去掉
求解决!!
------解决方案--------------------
----------------------------------------------------------------
-- Author :DBA_HuangZJ(发粪涂墙)
-- Date :2014-05-27 15:48:25
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
-- Apr 2 2010 15:48:46
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([col] nvarchar(max))
insert [huang]
select '{E4837DE3-BA98-492F-A720-C3F3FC02600E}=68,{6EBE596B-8361-41A3-8D34-26EB651A147C}=88,{1273635E-3716-4200-B2F2-B583D21CAC19}=168,{0B5F6F5A-B6AD-4D7A-9BB9-9C0F6CAE2341}=168,{A3A15C25-B890-47E6-948F-F0B4677A9333}=128,{6A73430E-6E55-4E15-89E6-18A5285BAAAD}=38'
--------------生成数据--------------------------
;WITH cte AS (
SELECT SUBSTRING([col], number, CHARINDEX(',', [col] + ',', number) - number) AS [col]
FROM huang a ,
master..spt_values
WHERE number >= 1
AND number <= LEN([col])
AND type = 'p'
AND SUBSTRING(',' + [col], number, 1) = ',')
SELECT LEFT(col,PATINDEX('%=%',col)-1)col,RIGHT(col,LEN(col)-PATINDEX('%=%',col))[数量]
FROM cte
----------------结果----------------------------
/*
col 数量
---------------------------------------- -------
{E4837DE3-BA98-492F-A720-C3F3FC02600E} 68
{6EBE596B-8361-41A3-8D34-26EB651A147C} 88
{1273635E-3716-4200-B2F2-B583D21CAC19} 168
{0B5F6F5A-B6AD-4D7A-9BB9-9C0F6CAE2341} 168
{A3A15C25-B890-47E6-948F-F0B4677A9333} 128
{6A73430E-6E55-4E15-89E6-18A5285BAAAD} 38
*/