繁体   English   中英

使用 CAST 和确定小数时出现大查询错误

[英]Big Query Error When Using CAST and determining decimals

我的 Big Query 工作区中有此代码。

SELECT CAST(Cost AS FLOAT64)
FROM `db_table`
WHERE COST > 0
LIMIT 1000

该列返回这些数字:

2590000.0
965145.0

但是,我需要将数字作为货币,例如第一个返回 2590000.0 应该是 25.90,第二个应该是 96.51

所以我把我的代码改成这样:

SELECT CAST(Cost AS FLOAT64(4,2))
FROM `db_table`
WHERE COST > 0
LIMIT 1000

现在我得到这个错误:

FLOAT64 不支持 [1:28] 处的类型参数

有什么我想念的吗? 如何转换为小数点并指定小数点在 BQ 中的位置?

谢谢,

由于问题不明确,我在这里做一些假设:

  1. 目标是解析出 Cost 的前 4 个字符。
  2. 没有四舍五入。

因此,下面的示例代码完成了以下任务:

  1. 将成本转换为字符串
  2. 用小数连接字符串的前两个字符,然后连接字符串的 rest。
  3. 将 output 格式化为始终显示 2 位小数。
CREATE TEMP TABLE db_table ( cost FLOAT64 );

INSERT INTO
  db_table
VALUES
  ( 2590000.0 );

INSERT INTO
  db_table
VALUES
  ( 965145.0 );

SELECT
  FORMAT("%.*f",2, CAST(CONCAT(SUBSTR(CAST(Cost as STRING), 0, 2), '.', SUBSTR(CAST(Cost as STRING), 3)) as FLOAT64) + 0.0001)
FROM
  db_table; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM