【问题标题】:Simplest way to do an array literal in MySQL在 MySQL 中执行数组文字的最简单方法
【发布时间】:2021-03-19 09:36:31
【问题描述】:

我想在mysql中获取数组[1,2,3]。例如:

with tbl (id) as (
    select 1 union select 2 union select 3
) select 'something', json_arrayagg(id) from tbl

# something, json_arrayagg(id)
# 'something', '[1, 2, 3]'

是否有一种更简单的方法来做到这一点,而不是在 CTE 中“建立一个表”,然后在它之外进行分组?


例如,我正在尝试做这样的事情(如果可能的话):

SELECT '1', [1,2,3]

MySQL '8.0.20' 错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '[1,2,3]) 附近使用的正确语法,这些 ids from sort group by letter order by ids asc SELECT '1', [1,2,3]' at第 4 行

【问题讨论】:

  • 你能在这里给我们一些背景信息吗?我的意思是,文字 [1, 2, 3] 有什么问题?
  • @TimBiegeleisen 它在 mysql8 中不起作用(对我来说)。你自己能做到吗?
  • @TimBiegeleisen 哦,我明白了——是的,它也对我有用!我的意思是不使用cte 而只使用[1,2,3] 或更简单的东西。
  • 好吧,据我所知,[1, 2, 3] 实际上是一个有效的 JSON 文字。我不确定你的想法。

标签: mysql arrays json


【解决方案1】:

在上面的大量评论之后,您的实际问题已经出现,即您对如何在 MySQL 中使用 JSON 文字感到困惑。 MySQL 中的有效 JSON 文字总是用单引号括起来,就像字符串文字一样。考虑这个小例子:

WITH yourTable AS (
    SELECT '1' AS id, '[1,2,3]' AS array
)

SELECT Id, JSON_EXTRACT(array, '$[2]') AS third
FROM yourTable;

这会输出1, 3,如demo link 所示。这里的关键是你已经知道如何形成的 JSON 数组字面量是用单引号括起来的。

【讨论】:

  • 啊,明白了,'json' 部分应该是不言自明的:它不是原生数组——谢谢!
  • @David542 基本上所有 SQL 数据库都有简洁且令人困惑的 JSON API……有时这真是令人头疼。
猜你喜欢
  • 2023-03-06
  • 2011-06-02
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多