問題是這樣的。從訂閱表中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 編寫乙個錶值函式,傳入乙個字串,實現轉換成列,條件以逗號分隔 任何符號都可以自定義 複製 空格分隔的字串 ...