第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將充滿逗號(hào)分隔值的varchar傳遞給SQLServer IN函數(shù)

將充滿逗號(hào)分隔值的varchar傳遞給SQLServer IN函數(shù)

互換的青春 2019-06-17 16:04:41
將充滿逗號(hào)分隔值的varchar傳遞給SQLServer IN函數(shù)我有一個(gè)SQLServer存儲(chǔ)過程,我想在其中傳遞一個(gè)varchar中充滿逗號(hào)分隔的值。IN功能。例如:DECLARE @Ids varchar(50);SET @Ids = '1,2,3,5,4,6,7,98,234';SELECT * FROM sometable  WHERE tableid IN (@Ids);當(dāng)然,這是行不通的。我知道錯(cuò)誤:將varchar值‘1,2,3,5,4,6,7,98,234’轉(zhuǎn)換為int數(shù)據(jù)類型時(shí),轉(zhuǎn)換失敗。我如何才能做到這一點(diǎn)(或類似的事情)而不訴諸于構(gòu)建動(dòng)態(tài)SQL?
查看完整描述

3 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

當(dāng)然,如果你像我一樣懶惰,你可以這么做:

Declare @Ids varchar(50) Set @Ids = ',1,2,3,5,4,6,7,98,234,'Select * from sometable where Charindex(','+cast(tableid as varchar(8000))+',', 
@Ids) > 0


查看完整回答
反對(duì) 回復(fù) 2019-06-17
?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

沒有表,沒有函數(shù),沒有循環(huán)

基于將列表解析為DBA建議使用XML的表的想法。

Declare @Ids varchar(50)Set @Ids = ‘1,2,3,5,4,6,7,98,234’DECLARE @XML XMLSET @XML = CAST('<i>' + REPLACE(@Ids, ',', '</i><i>') +
 '</i>' AS XML)SELECT * FROM
    SomeTable 
    INNER JOIN @XML.nodes('i') x(i) 
        ON  SomeTable .Id = x.i.value('.', 'VARCHAR(MAX)')

它們的表現(xiàn)似乎與@KM的回答相同,但我認(rèn)為,要簡單得多。


查看完整回答
反對(duì) 回復(fù) 2019-06-17
  • 3 回答
  • 0 關(guān)注
  • 1343 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)