在PostgreSql数据库中使用CASE-WHEN将Double保存为int
本文关键字:Double 保存 int CASE-WHEN PostgreSql 数据库 | 更新日期: 2023-09-27 18:19:05
我在更新表时遇到问题。数字(3,25)保存为325。只有当我使用UPDATE:
时才会发生这种情况using(var con = new Npgsql.NpgsqlConnection(constr))
{
var UpdCmd = "UPDATE '"Haus'".'"Category'" SET '"Value'" =
CASE "+" WHEN '"CategoryID'"=" + 1 + " THEN " + 3.25 +
" WHEN '"CategoryID'"=" + 2 + " THEN " + 2.25 +" END ";
con.Open();
Npgsql.NpgsqlCommand command = new Npgsql.NpgsqlCommand(UpdCmd, con);
command.ExecuteNonQuery();
}
valueCategoryA和valueCategoryB都是double类型。如果我使用简单的Update没有CASE,我就不会有这个问题。
编辑:我也得到了相同的查询参数的结果。不管我用的是3 25还是3.25。结果总是325
如果您不想使用驱动程序的参数传递,那么至少将其格式化为:
string UpdCmd = String.Format(@"
UPDATE ""Haus"".""Category""
SET ""Value"" = CASE ""CategoryID""
WHEN 1 THEN {0}
WHEN 2 THEN {1}
END
", valueCategoryA, valueCategoryB);
双引号转义原始(@)字符串中的另一个双引号。在原始字符串中,您可以使用多行字符串。这和Format
方法使它更易于阅读。
为什么使用var
如果你知道它是一个字符串?