iT邦幫忙

0

SQL select字串 問題請教

sql
  • 分享至 

  • twitterImage

資料如下
http://sqlfiddle.com/#!18/690578/1

欄位有MemberID、MemberAccount、IsPrimaryAccount

若我想撈出一個字串回傳結果 = 'Test123(主),Test456,Test789'

p.s IsPrimaryAccount = true 的為主帳號

請問該如何處理? 謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
allenlwh
iT邦高手 1 級 ‧ 2020-11-09 13:19:24
最佳解答
select MemberAccount+case when IsPrimaryAccount=1 then '(主)' else '' end+','
from a
for xml path ('')
w4560000 iT邦研究生 5 級 ‧ 2020-11-09 13:27:51 檢舉

感謝回復

0
wrxue
iT邦好手 1 級 ‧ 2020-11-09 12:45:17
select * from A WHERE IsPrimaryAccount = 1

true為1,false為0

w4560000 iT邦研究生 5 級 ‧ 2020-11-09 13:27:26 檢舉

感謝回復

0
japhenchen
iT邦超人 1 級 ‧ 2020-11-09 13:23:27

你在fiddle上設定的平台是2017,所以我以2017的答案回答

DECLARE @Result varchar(max)

SELECT 
   @Result = STUFF( (SELECT ',' + MemberAccount 
                             FROM a 
                             WHERE IsPrimaryAccount=1
                             FOR XML PATH('')), 
                            1, 1, '')
select @Result
看更多先前的回應...收起先前的回應...
w4560000 iT邦研究生 5 級 ‧ 2020-11-09 13:27:55 檢舉

感謝回復

allenlwh iT邦高手 1 級 ‧ 2020-11-09 13:37:30 檢舉

感謝japhenchen ,今天學到了STUFF的用法。
之前都是將','留在最後,再用SUBSTR。
今天這個方法看來更好用,直接把第1個字元換掉。

我承認我看錯題意,補一下正確答案

DECLARE @Result varchar(max)

SELECT 
   @Result = STUFF( (SELECT ',' + MemberAccount + case IsPrimaryAccount when 1 then '(主)' else '' end
                             FROM a 
                             FOR XML PATH('')), 
                            1, 1, '')
select @Result
w4560000 iT邦研究生 5 級 ‧ 2020-11-09 14:10:48 檢舉

感謝! 多學到了一個用法/images/emoticon/emoticon41.gif

我要發表回答

立即登入回答