簡體   English   中英

將數據類型 varchar 轉換為 bigint 時出錯 - IN 子句

[英]Error converting data type varchar to bigint - IN clause

我正在嘗試創建一個DELETE語句,我將使用IN子句根據 id 列表從表中刪除一些項目:

DELETE FROM table WHERE id IN (@ids)

使用SqlCommand ,我正在執行以下操作來生成IN參數:

public void DeleteItemsByIds(int[] ids) {

    Parameters["ids"] = string.Join(", ", ids);
    ExecuteNonQuery(deleteStatement, Parameters);
}

然后我收到一個錯誤:

將數據類型 varchar 轉換為 bigint 時出錯

有人知道我該如何解決嗎?

謝謝你們!

in期望左側和右側的類型兼容的事物列表。 顯然in的左側是數字,右側是字符串。 而且,您不能將字符串轉換為數字,因為它是一個逗號分隔的列表。

快速而骯臟的解決方案是簡單地使用like

DELETE
    FROM table
    WHERE ',' + @ids + ',' LIKE '%,' + CAST(id as VARCHAR(255)) + ',%';

然而,這在性能方面並不是最理想的,因為它不能使用id上的索引。 更好的解決方案需要更多地了解使用 SQL 的應用程序。

這肯定會幫助你

select * from tblusers where userid in(select value from String_Split('1,2,3,4',','))

String_Split 是一個內置的 SQL 函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM