[英]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.