Sql 在BigQuery中使用CONCAT时出错

Sql 在BigQuery中使用CONCAT时出错,sql,google-bigquery,bigquery-standard-sql,Sql,Google Bigquery,Bigquery Standard Sql,我正在尝试运行一个查询,在该查询中,我将两列合并,并在它们之间用x分隔 我还试图从同一个表中获取一些其他列。但是,我得到了以下错误 错误:参数类型为FLOAT64、FLOAT64的函数CONCAT没有匹配的签名。支持的签名:CONCAT(字符串,[STRING,…]);CONCAT(字节,[字节,…]) 这是我的密码: SELECT CONCAT(right,'x',left), position, numbercreated, Madefrom FROM table WHE

我正在尝试运行一个查询,在该查询中,我将两列合并,并在它们之间用x分隔

我还试图从同一个表中获取一些其他列。但是,我得到了以下错误

错误:参数类型为FLOAT64、FLOAT64的函数CONCAT没有匹配的签名。支持的签名:CONCAT(字符串,[STRING,…]);CONCAT(字节,[字节,…])

这是我的密码:

SELECT
  CONCAT(right,'x',left),
  position,
  numbercreated,
  Madefrom
FROM
  table
WHERE
Date = "2018-10-07%"
我以前也试过投下一个角色,但没有成功

选择Concast(铸造(右,'x',左)),位置,。。。
选择Concast(cast(右,'x',左)作为字符串),位置,。。。

为什么我会犯这个错误? 有什么补救办法吗?
感谢您的帮助。

使用
safe\u cast
尝试以下操作:

SELECT
    CONCAT(SAFE_CAST( right as string ),'x',SAFE_CAST(left as string)),
    position,
    numbercreated,
    Madefrom
FROM
    table
WHERE
    Date = '2018-10-07'

您需要在
concat()
之前强制转换每个值:

如果需要特定格式,请使用
format()
函数

我还怀疑您的
WHERE
是否匹配任何内容。如果
Date
是一个字符串,那么您可能需要像
这样的

WHERE Date LIKE '2018-10-07%';
更可能的情况是,您应该使用
DATE
功能或直接比较:

WHERE DATE(Date) = '2018-10-07'
或:

其中日期>='2018-10-07'和
日期<'2018-10-08'

解决CONCAT问题的另一个选项是使用FROMAT函数,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1.01 AS `right`, 2.0 AS `left`
)
SELECT FORMAT('%g%s%g', t.right, 'x', t.left)
FROM `project.dataset.table` t  
结果将是

Row f0_  
1   1.01x2  
注意:在上面的具体示例中,您可以使用更简单的语句

FORMAT('%gx%g', t.right, t.left)    
你可以看到更多的支持

少数建议-尽量不要将关键字用作列名/别名。如果出于某种原因,您确实使用-wrap-with-backtick或在其前面加上表名/别名


还有一条评论——看起来你改变了你的价值观立场——你右边的评论在左边,左边的评论在右边——可能正是你需要的,但你想提及的

谢谢。解决了这个问题!
Row f0_  
1   1.01x2  
FORMAT('%gx%g', t.right, t.left)