0
我注意到以下行为:Npgsql的如何处理投类型
在pgAdmin的我执行此查询,我得到这样的结果:
SELECT
CAST(COALESCE(c.latitude, '-1') as varchar),
CAST(COALESCE(c.longitude, '-1') as varchar)
FROM mytable c WHERE c.acolumn = 'S' AND c.anothercolumn=1
---------------------------------
coalesce coalesce
character varying character varying
"-25.30089" | "-57.625866"
我在C#中使用版本Npgsql的2.2.4.3项目,使用涉及IDbCommand和IDataReader相同的查询,我得到这些结果:
IDbCommand cmd = con.CreateCommand();
cmd.Connection = con;
IDataReader reader = null;
cmd.CommandText = "SELECT CAST(COALESCE(c.latitude, '-1') as varchar), CAST(COALESCE(c.longitude, '-1') as varchar) FROM mytable c WHERE c.acolumn = 'S' AND c.anothercolumn=1";
cmd.CommandType = CommandType.Text;
reader = cmd.ExecuteReader();
while (reader.Read())
{
string latitude_r= reader.GetValue(0).ToString();
string longitude_r= reader.GetValue(1).ToString();
}
---------------------------------------------
latitude_r "-25.300889999999999" string
longitude_r "-57.625866000000002" string
谁能给我解释一下为什么?是因为我正在使用.NET IDbCommand接口?有没有一种方法可以在没有这些额外的十进制值的情况下得到确切的值这是列的PostgreSQL的定义:
ALTER TABLE mytable ADD COLUMN longitude double precision;
ALTER TABLE mytable ADD COLUMN latitude double precision;