declare@sqlvarchar(2000),@tsqlnvarchar(max),@splitvarchar(100)set@sql='A,B,C,D,E'--保存的字符set@split=','--分隔符select@tsql='select'''+replace(@sql,@split,'''ASNewunionallselect''')+''''exec(@tsql)createtableT(idchar(6),wordsvarchar(100))insertintoTvalues('1','A,B,C,D,E')--droptableTdeclare@tsqlvarchar(100),@sentencevarchar(100)exec('selecttop1wordsfromTwhereid=''1''')--此處本嘗試獲得exec執(zhí)行的結(jié)果(字符串),以用于下面的Replace函數(shù)第一個(gè)參數(shù),但未找到方法;select@tsql='select'''+replace('A,B,C,D,E',',','''ASNewunionallselect''')+''''exec(@tsql)
2 回答

aluckdog
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
這里可以不用EXEC,換另外一種思路。DECLARE@wordVARCHAR(100);SELECT@word=(SELECTTOP1wordsFROMTWHEREid=1);這樣就可以獲取到字符串了。

絕地?zé)o雙
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
declare@sqlvarchar(2000),@tsqlnvarchar(max),@splitvarchar(100)set@sql='A,B,C,D,E'--保存的字符set@split=','--分隔符select@tsql='select'''+replace(@sql,@split,'''ASNewunionallselect''')+''''declare@ttable([new]nvarchar(255))insertinto@texec(@tsql)select*from@t但正如上面所說的,這里沒必要用exec,直接取值就可以declare@ttable(idchar(6),wordsvarchar(100))insertinto@tvalues('1','A,B,C,D,E')insertinto@tvalues('2','A,B,C,D,E,F')insertinto@tvalues('3','A,B,C,D,E,F,G')declare@wvarchar(100)selecttop1@w=wordsfrom@tdeclare@tsqlvarchar(2000)select@tsql='select'''+replace(@w,',','''ASNewunionallselect''')+''''exec(@tsql)