如何获取 MySQL 列中数组的长度?
How to get length of an array in MySQL column?
我在 Temp 列中有一个数组,我正在尝试查找数组的长度。
我尝试了 JSON_LENGTH
但它不起作用。
到目前为止我试过了
SELECT JSON_LENGTH(Temp)from tbl_name;
得到这个
Id Temp
1 ['53682', '66890', '53925', '54847']
2 ['53682', '66890', '53925', '54843','54890']
预期输出:
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
db<>fiddle here
我在 Temp 列中有一个数组,我正在尝试查找数组的长度。
我尝试了 JSON_LENGTH
但它不起作用。
到目前为止我试过了
SELECT JSON_LENGTH(Temp)from tbl_name;
得到这个
Id Temp
1 ['53682', '66890', '53925', '54847']
2 ['53682', '66890', '53925', '54843','54890']
预期输出:
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
db<>fiddle here