如何获取MySQL列中数组的长度?

如何获取MySQL列中数组的长度?,mysql,arrays,mysql-json,Mysql,Arrays,Mysql Json,我在列Temp中有一个数组,我正在尝试查找数组的长度。 我尝试了JSON_长度,但不起作用 到目前为止我试过这个 SELECT JSON_LENGTH(Temp)from tbl_name; 还有这个 预期产出: Id Temp Count 1 ['53682', '66890', '53925', '54847'] 4 2 ['53682', '66890', '5392

我在列Temp中有一个数组,我正在尝试查找数组的长度。 我尝试了JSON_长度,但不起作用

到目前为止我试过这个

SELECT JSON_LENGTH(Temp)from tbl_name;
还有这个

预期产出:

Id  Temp                                             Count
1   ['53682', '66890', '53925', '54847']             4
2   ['53682', '66890', '53925', '54843','54890']     5

你有两种可能

旧时尚 将“替换为”
dbfiddle

你不工作是什么意思?它会给出一个错误吗?如果是,错误是什么?您使用的是没有JSON函数的旧版本MySQL吗?这不是有效的JSON,因为在有效的JSON中使用单引号,而双引号是必需的。我怀疑您没有使用JSON数据类型,这将拒绝上面显示的数据。@BillKarwin我尝试从表名称中选择JSON\u lengthChance;所有行都为空。@BillKarwin我使用的是8.0.23版本,我有JSON函数。我使用MySQL 8.0.23测试了它,如果使用双引号而不是单引号,它就会工作。
Id  Temp                                             Count
1   ['53682', '66890', '53925', '54847']             4
2   ['53682', '66890', '53925', '54843','54890']     5
CREATE TABLE table1 (
  `Id` INTEGER,
  `Temp` VARCHAR(44)
);

INSERT INTO table1
  (`Id`, `Temp`)
VALUES
  ('1', "['53682', '66890', '53925', '54847']"),
  ('2', "['53682', '66890', '53925', '54843','54890']");
seLECT `Id`, `Temp`, CHAR_LENGTH (`Temp`) - CHAR_LENGTH (REPLACE(`Temp`,',','')) + 1  as cnt FROM table1
Id | Temp | cnt -: | :------------------------------------------- | --: 1 | ['53682', '66890', '53925', '54847'] | 4 2 | ['53682', '66890', '53925', '54843','54890'] | 5
CREATE TABLE table2 (
  `Id` INTEGER,
  `Temp` VARCHAR(44)
);

INSERT INTO table2
  (`Id`, `Temp`)
VALUES
  ('1', '["53682", "66890", "53925", "54847"]'),
  ('2', '["53682", "66890", "53925", "54843","54890"]');
SELECT `Id`, `Temp`, JSON_LENGTH(`Temp`) AS cnt FROM table2
Id | Temp | cnt -: | :------------------------------------------- | --: 1 | ["53682", "66890", "53925", "54847"] | 4 2 | ["53682", "66890", "53925", "54843","54890"] | 5