您好,登錄后才能下訂單哦!
今天給大家介紹一下SQL Server怎么合并組內(nèi)字符串。文章的內(nèi)容小編覺(jué)得不錯(cuò),現(xiàn)在給大家分享一下,覺(jué)得有需要的朋友可以了解一下,希望對(duì)大家有所幫助,下面跟著小編的思路一起來(lái)閱讀吧。
SELECT p2.G,
SS = JSON_VALUE(
REPLACE(
(SELECT _ = p1.S FROM T p1 WHERE p1.G = p2.G FOR JSON PATH)
,'"},{"_":"',', '),'$[0]._'
)
FROM T p2
SQL Server 2014需要3層嵌套來(lái)合并組內(nèi)字符串,還得借助XML,代碼看起來(lái)非常復(fù)雜:
SELECT Main.G, LEFT(Main.SS,Len(Main.SS)-1) As "SS" FROM ( SELECT DISTINCT p2.G, ( SELECT p1.S + ',' AS [text()] FROM T p1 WHERE p1.G = p2.G ORDER BY p1.G FOR XML PATH ('') )[SS] FROM T p2 )[Main] |
其他版本的SQL Server寫法雖然各有不同,但通常也很復(fù)雜。
當(dāng)數(shù)據(jù)庫(kù)沒(méi)有類似group_concat這樣的函數(shù)時(shí),可以用esProc協(xié)助實(shí)現(xiàn),代碼會(huì)簡(jiǎn)單很多。同樣針對(duì)2014版SQL Server,esProc可以這樣合并組內(nèi)字符串:
A | B | |
1 | =db.query("select G, S from T") | /query from SQL Server 2014 |
2 | =A1.group(G; ~.(S).concat(",")) | /用逗號(hào)合并多行 |
這樣就可以實(shí)現(xiàn)類似group_concat的功能了,而且任何數(shù)據(jù)庫(kù)上都可以用。
esProc是個(gè)腳本語(yǔ)言,可以在IDE里反復(fù)執(zhí)行,還可以用命令行方式調(diào)用,適合簡(jiǎn)化SQL中的難題。
以上就是SQL Server怎么合并組內(nèi)字符串的全部?jī)?nèi)容了,更多與SQL Server怎么合并組內(nèi)字符串相關(guān)的內(nèi)容可以搜索億速云之前的文章或者瀏覽下面的文章進(jìn)行學(xué)習(xí)哈!相信小編會(huì)給大家增添更多知識(shí),希望大家能夠支持一下億速云!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。