如何将array_concat与浮点列和数组列一起使用

Posted

技术标签:

【中文标题】如何将array_concat与浮点列和数组列一起使用【英文标题】:How to use array_concat with float column and array column 【发布时间】:2019-07-10 17:09:30 【问题描述】:

我想创建一个数组,将数组列和浮点列组合成一个数组

我尝试了array_concat(array_column, float_column),但得到了错误:

错误:ARRAY_CONCAT(或 ARRAY_CONCAT_AGG)的参数必须是数组类型,但在 [2:29] 时为 DOUBLE

对于一个字符串列(每行包含一个单词),我使用“”上的拆分​​将其转换为一个数组,作为创建数组然后使用 array_concat 的技巧,但我不能用浮点列做到这一点.

我基本上想将浮点列转换为数组类型,以便可以将 Array_concat 与其他数组一起使用。

SELECT Product_ID, array_concat(split(Product_Name , ' '), price) as description
FROM table 

我想要一个将我的数组列与我的非数组浮点列中的单个元素组合在一起的单个数组。

【问题讨论】:

我发现了一个技巧,将价格转换为字符串,与 product_name 连接,中间有一个空格,然后拆分,但是,我认为它应该比这更容易! 【参考方案1】:

这是你想要的吗?

WITH Raw AS (
  select "product1_name" AS a, 2.0 AS b
  union all
  select "product2_name", 3.0
)

select
  [a, CAST(b AS STRING)]
FROM
  Raw

-----回复-----

结合数组注释和ARRAY_CONCAT函数应该可以工作

WITH Raw AS (
  select ["a", "b", "c"] AS a, 2.0 AS b
  union all
  select ["b", "c"], 3.0
)

select
  ARRAY_CONCAT(a, [CAST(b AS STRING)])
FROM
  Raw

【讨论】:

不,在您的情况下,您正在创建一个字符串类型和浮点类型列的数组。我想要的是一个数组类型和浮点类型列的数组。基本上,将单个浮点元素附加到数组列中的数组。如果我使用你的方法,我最终会得到一个不支持的嵌套数组。例如 [['a','b','c'],3.0],但我想要的是 ['a','b','c',3.0](如果数组只支持单一数据类型,那么 ['a','b','c','£3'] 也可以使用 知道了,有根据你的情况修改的答案。请看一下

以上是关于如何将array_concat与浮点列和数组列一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 中将日期列和相关列一起取消嵌套?

将日期列和时间列合并到日期时间

c++如何将数组压入队列中

MySQL/PHP:如何获取列和关联数据

如何使用分隔列和值的数组生成查询

如何将(四舍五入)浮点数数组更改为字符串数组python