交流 SQL 2005溢用之 分拆列值

2021-04-16 14:36:22 字數 1930 閱讀 5293

問題描述:

有表tb, 如下:

idvalues

----------- -----------

1aa,bb

2aaa,bbb,ccc

欲按,分拆

values列,

分拆後結果如下

:

idvalue

----------- --------

1aa1bb

2aaa

2bbb

2ccc

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. 新的解決方法

-- 示例資料

declare

@t table

(id int

, [values] varchar

(100))

insert

@t select 1,

'aa,bb'

union

allselect 2,

'aaa,bbb,ccc'

-- 查詢處理

select

a.id, b.

value

from

(

select id, [values] =

convert

(xml

,

'

'+replace

([values],

',',

' ')+

'')from @t

)aouter

select

value

= n.v.

value

('.'

,'varchar(100)'

)

from a.[values].nodes(

'/root/v'

) n(v)

)b/*--

結果 idvalue

----------- --------

1aa1bb

2aaa

2bbb

2ccc

(5 行受影響

)

--*/

csdn 

社群帖子位址

: 合併與分拆的

clr,

sql2005

的示例中有:

在安裝sql 2005

的示例後,預設安裝目錄為

drive:/program files/microsoft sql server/90/samples/engine/programmability/clr/stringutilities

交流 SQL 2005溢用之 分拆列值

問題描述 有表tb,如下 idvalues 1aa,bb 2aaa,bbb,ccc 欲按,分拆 values列,分拆後結果如下 idvalue 1aa1bb 2aaa 2bbb 2ccc 1.舊的解決方法 select top 8000 id identity int 1,1 into from s...

交流 SQL 2005溢用之 分拆列值

問題描述 有表tb,如下 idvalues 1aa,bb 2aaa,bbb,ccc 欲按,分拆 values列,分拆後結果如下 idvalue 1aa1bb 2aaa 2bbb 2ccc 1.舊的解決方法 select top 8000 id identity int 1,1 into from s...

交流 SQL 2005溢用之 分拆列值

問題描述 有表tb,如下 idvalues 1aa,bb 2aaa,bbb,ccc 欲按,分拆 values列,分拆後結果如下 idvalue 1aa1bb 2aaa 2bbb 2ccc 1.舊的解決方法 select top 8000 id identity int 1,1 into from s...