SQL字串拼接FOR XML PATH

2022-05-05 13:54:13 字數 1887 閱讀 6953

在工作中難免會遇到資料庫中資料要進行拼接的問題,字串拼接可以是用sql的拼接也可以使用c#的拼接,本次說的是使用sql進行拼接。

首先插入測試語句:

--

測試語句,準備建立表的語句:如下

create

table

dbo.test3

( id

intidentity(1,1) not

null

primary

keynonclustered

, typeid

nvarchar(50) null

, typename

nvarchar(50) null

);create

unique

clustered

index

idx3_id

ondbo.test3(id);

--插入測試資料

insert

into dbo.test3(typeid,typename) values('

s1', '一班'

);insert

into dbo.test3(typeid,typename) values('

s1', '二班'

);insert

into dbo.test3(typeid,typename) values('

s1', '三班'

);insert

into dbo.test3(typeid,typename) values('

s2', '一班'

);insert

into dbo.test3(typeid,typename) values('

s2', '二班'

);insert

into dbo.test3(typeid,typename) values('

s3', '三班'

);insert

into dbo.test3(typeid,typename) values('

s3', '四班'

);insert

into dbo.test3(typeid,typename) values('

s3', '五班'

);insert

into dbo.test3(typeid,typename) values('

s3', '六班'

);insert

into dbo.test3(typeid,typename) values('

s4', '一班'

);insert

into dbo.test3(typeid,typename) values('

s4', '

二班');

查詢結果如下:

比如,現在的需求是,我想知道每個階段(s1為第一階段)有哪些班級,上圖肯定有點亂,如果能每一階段顯示一條資料就好了。

select b.typeid,left(b.list,len(b.list)-

1) from (select typeid,(select typename+',

'from

test3

where a.typeid=typeid--

比對條件,如果缺少則每條都相同

for xml path('')) as

list

from

test3 a

group

bytypeid

)b

執行結果如下:

至此,就看出,使用sql for xml path很簡單就能拼接出想要的結果來,何樂而不為呢。

SQL 拼接字串

寫sql的時候有時候用到需要拼接多個字段或者在查詢出結果的字段裡加入一部分固定的字串。方法一 在查詢到的結果後,用 去拼接。這種方法就不在贅述。方法二 使用資料庫提供的方法concat a,b oracle 中concat a,b 只能有兩個引數,如果concat中連線的值不是字串,那麼oracle...

sql字串拼接

oracle 使用 或者concat sql select aaa bbb from dual aaa bbb aaabbb sql select concat aaa ccc from dual concat aaa aaaccc mysql中,使用 如果字串全是數字則轉化為數字,否則轉換為0,也...

sql字串拼接

在sql語句中經常需要進行字串拼接,以sqlserver,oracle,mysql三種資料庫為例,因為這三種資料庫具有代表性。sqlserver select 123 456 oracle select 123 456 from dual 或select concat 123 456 from du...