postgresql - 将字符串分数转换为 float

标签 postgresql

我们正在尝试在 PostgreSQL 中转换为如下内容:

select '1/2'::float;

ERROR:  invalid input syntax for type double precision: "1/2"
LINE 1: select '1/2'::float;

实际上这是可行的:

select 1/2::float;
  ?column? 
----------
    0.5

我们是否遗漏了什么?我们已经尝试过 to_number...我们抛出的唯一解决方案是使用 split...

最佳答案

Are we missing something?

是的,你是。

1/2::float 表示“值 1 除以值 2 转换为 float ”。

'1/2'::float 表示:将字符串 '1/2' 转换为浮点值 - 但是 /字符对于数字常量无效。

SQL 中的有效数字由数字 0-9 和用于小数点分隔符的点 . 和可选的 e 组成,用于指示指数值(例如 1e6 表示“一”百万”)。所以 '1/2'::float 是错误的,与 '1(2'::float'1 除以 2':: float


在你要求一个函数为你做这件事之前,请参阅以下有关通用“eval()”函数的问题:

关于postgresql - 将字符串分数转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798604/

相关文章:

postgresql - 是否有任何工具可以将 RDS PostgreSQL 从 AWS 迁移到 Google Cloud SQL?

sql - 左外部连接未返回预期结果

mysql - 如何比较where子句中的多行

python - SQLAlchemy/psycopg2 : JSONB columns are being returned as strings instead of dicts Python

mysql - IFNULL() 等价于 PostgreSQL

postgresql - Postgres 更新语句

sql - 将两个 JOIN 查询组合在一起

python - 使用包含单引号的 json 更新 PostgreSQL 中的 jsonb 字段

java - 如何在 Java 中绑定(bind) hstore[] 值

database - 从坐标 POSTGIS 创建的线串