在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

在PostgreSql数据库中使用CASE-WHEN将Double保存为int

如果您不想使用驱动程序的参数传递,那么至少将其格式化为:

string UpdCmd = String.Format(@"
    UPDATE ""Haus"".""Category""
    SET ""Value"" = CASE ""CategoryID""
        WHEN 1 THEN {0}
        WHEN 2 THEN {1}
        END
    ", valueCategoryA, valueCategoryB);

双引号转义原始(@)字符串中的另一个双引号。在原始字符串中,您可以使用多行字符串。这和Format方法使它更易于阅读。

为什么使用var如果你知道它是一个字符串?