Sql 对varchar数据类型列执行计算
我在数据库中有一个存货数量列,它的数据类型是varchar。工人从仓库取出产品时,应扣除库存数量。我在编写Sql语句时遇到了一些问题:Sql 对varchar数据类型列执行计算,sql,database,Sql,Database,我在数据库中有一个存货数量列,它的数据类型是varchar。工人从仓库取出产品时,应扣除库存数量。我在编写Sql语句时遇到了一些问题: public bool updateInventoryQty(string productID, int prodQty) { bool result = false; result = Conversion.intToBool(FoodBankDB.executeNonQuery( "UPDATE
public bool updateInventoryQty(string productID, int prodQty)
{
bool result = false;
result = Conversion.intToBool(FoodBankDB.executeNonQuery(
"UPDATE dbo.products SET inventoryQuantity = inventoryQuantity - prodQty WHERE id = '" + productID + "'"
));
return result;
}
我把取出的数量作为参数。由于inventoryQuantity是varchar,因此我认为它无法执行任何计算。那么我应该把它改成:
"UPDATE dbo.products SET Convert(INT, inventoryQuantity) = inventoryQuantity - prodQty WHERE id = '" + productID + "'"
我做得对吗?提前感谢。您应该转换作业的另一面:
"UPDATE dbo.products
SET inventoryQuantity = CAST((CAST(inventoryQuantity AS INT) - prodQty) AS VARCHAR(20)) WHERE id = '" + productID + "'"
另外,不要连接查询,请使用参数。您现在很容易受到SQL注入的攻击。使用参数化查询-您应该始终使用最合适的数据类型-毕竟,这就是它们的用途!根据定义,
quantity
是一个数值-因此它应该以这样的方式存储-绝对不能以varchar
的形式存储!我的prodQty是一个变量。当我运行它时,它会显示一条错误消息“无效列名prodQty”。那么您不应该使用@prodQty
?