萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> SQL Server2005中按列連接字符串三種方法

SQL Server2005中按列連接字符串三種方法

最近做一個項目,遇到一個在分組的情況下,將某一列的字段值(varchar類型)連接起來的問題,類似於sum函數對int型字段值求和。如有一個表t_table,結構和數據如圖1

SQL Server2005中按列連接字符串三種方法
圖1

其中要按著xh字段分組,並且將每一組name字段值連接起來。最終結果希望如圖2所示

SQL Server2005中按列連接字符串三種方法
圖2

表中的th字段值對於每一個xh值是唯一的,也是有限的,也就是說,對於一個xh值,th的值不會太多,如最多是10個(從1至10)。

以上需求最終想了三種方法來解決這個問題。

一、修改表結構

如果是新的項目,可以考慮修改一下表的結構。如果t_table的結構修改如下:

xh     value1 value2   value3    value4     .... ....                 value10
   0001 123456 654321 456789  
   0002 12abcd 4d2r343 343dfd 
   0003 abcde3 132323

這種方法將value的值縱向改為橫向,也就是說,按每一個xh值,將value字段的值按逆時針旋轉了90度。 但這種方法要有一個前提,就是假設xh的每一個值所對應的value值不會太多,如上面不超過10個,這樣才有可能建立有限個字段。如果按著上面的字段結構,只需要將這些字段加一起就可以了,也不用分組。如下所示:

select xh , (value1 + value2 + value3 +  + value10) as value from t_table

但這種方法至少有如下三個缺陷:

1. 需要修改表結構,這對於已經進行很長時間或是已經上線的項目產不適用

2. 對每一個xh字段的value取值數有限制,如果太多,就得建立很多字段。這樣性能會降低。

3. 這樣做雖然查詢容易,但如果需要對每一個xh的不同值頻繁修改或加入新的值時,如果把它們都放到一行,容易因為行鎖而降低性能。

關鍵詞:

  • 1
  • 2
  • 3
  • 4
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved