有规律字段拆分(2005的解决方案)

mac2022-06-30  23

问题描述:

–有表tb, 如下: id          values ———– ———– 1           aa,bb 2           aaa,bbb,ccc –欲按,分拆values列, 分拆后结果如下: id          value ———– ——– 1           aa 1           bb 2           aaa 2           bbb 2           ccc

–1. 旧的解决方法 Select TOP 8000     id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b Select     A.id,     SUBSTRING(A.[values], B.id, CHARINDEX(‘,’, A.[values] + ‘,’, B.id) – B.id) FROM tb A, # B Where SUBSTRING(‘,’ + A.[values], B.id, 1) = ‘,’

Drop TABLE #

– 2. 在SQL Server2005中使用的方法如下: – 示例数据

DECLARE @t TABLE(id int, [values] varchar(100)) Insert @t Select 1, ‘aa,bb’ UNION ALL Select 2, ‘aaa,bbb,ccc’ – 查询处理 Select     A.id, B.value FROM(     Select id, [values] = CONVERT(xml,             ’<root><v>’ + REPLACE([values], ‘,’, ‘</v><v>’) + ‘</v></root>’)     FROM @t )A OUTER APPLY(     Select value = N.v.value(‘.’, ‘varchar(100)’)     FROM A.[values].nodes(‘/root/v’) N(v) )B /*–结果 id          value ———– ——– 1           aa 1           bb 2           aaa 2           bbb 2           ccc (5 行受影响) –*/

转载于:https://www.cnblogs.com/Gaojier/archive/2010/04/08/2783577.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)