把某一列值轉換為逗號分隔字串

2021-09-08 21:43:33 字數 1458 閱讀 5259

問題是這樣的。從訂閱表中select某乙個使用者所有訂閱的目錄,然後可以繫結至前台顯示給使用者,讓使用者知道自己有哪些訂閱和哪些目錄沒有訂閱。

如下表[

需要select使用者id為15的所有訂閱目錄。如最終結果:

insus.net是在sql server 2012結合xml的for xml path()來實現。參考:

select

[usersid

],  [

subscriptioncatalog]=

stuff((

select',

'+cast(

[subscriptioncatalog_nbr]as

nvarchar(

max))  

from

[dbo

]. [

subscription

]where (

[usersid

]= s.

[usersid

])

for xml path (

'')),

1,1,

'')from

[dbo

]. [

subscription

] s

where

[usersid]=

15groupby[

usersid]

首先是在資料表from

[dbo

].[subscription

],條件為where

[usersid]=

15過濾出使用者所有訂閱目錄,並分組groupby[

usersid]

然後把[

subscriptioncatalog_nbr

]由整型轉為字串:cast([

subscriptioncatalog_nbr]as

nvarchar(max)

再用',

'與之串連起來,最後用for xml path ('')方法,把每一行資料串連線起。

詳細一些,可以看到:

select',

'+cast(

[subscriptioncatalog_nbr]as

nvarchar(

max))  

from

[dbo

]. [

subscription

]for xml path (

'')

執行得到的結果:

stuff這個函式,是為了截除第乙個逗號。

獲取為以逗號分隔列值的字串

有否想過,獲取為以逗號分隔列值的字串。下面的語句顯示乙個簡單的例子,你可以作為乙個起點。select stuff select title from employees forxml path 1,2,全文完 以下為廣告部分 如果您想看下您的 https部署的是否安全,花1分鐘時間來 myssl.c...

SqlSerVer 列與逗號分隔字串 互相轉換

在專案中,使用sqlserver資料庫,有乙個需求,需要將資料庫的某一列,轉換成逗號分隔的字串。同時,需要將處理完的字串,轉換成為一列。經過查閱資料與學習,通過以下方式可以實現如上所述需求 1 編寫乙個錶值函式,傳入乙個字串,實現轉換成列,條件以逗號分隔 任何符號都可以自定義 空格分隔的字串 cre...

SqlSerVer 列與逗號分隔字串 互相轉換

在專案中,使用sqlserver資料庫,有乙個需求,需要將資料庫的某一列,轉換成逗號分隔的字串。同時,需要將處理完的字串,轉換成為一列。經過查閱資料與學習,通過以下方式可以實現如上所述需求 1 編寫乙個錶值函式,傳入乙個字串,實現轉換成列,條件以逗號分隔 任何符號都可以自定義 複製 空格分隔的字串 ...