如何将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与浮点列和数组列一起使用的主要内容,如果未能解决你的问题,请参考以下文章