亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將充滿逗號分隔值的varchar傳遞給SQLServer IN函數

將充滿逗號分隔值的varchar傳遞給SQLServer IN函數

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

3 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

當然,如果你像我一樣懶惰,你可以這么做:

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


查看完整回答
反對 回復 2019-06-17
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

沒有表,沒有函數,沒有循環

基于將列表解析為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)')

它們的表現似乎與@KM的回答相同,但我認為,要簡單得多。


查看完整回答
反對 回復 2019-06-17
  • 3 回答
  • 0 關注
  • 1345 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號