我们正在尝试在 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/