gpt4 book ai didi

不以m开头的MySQL Count值?

转载 作者:行者123 更新时间:2023-11-29 07:32:17 25 4
gpt4 key购买 nike

我需要 mysql 查询以不以 m 开头的 JSON 格式值从 channel 表中计数。

这是我的 table :

mysql> SELECT * FROM channels;
+----+---------------------+---------+----------+
| id | sort | bouquet | reseller |
+----+---------------------+---------+----------+
| 1 | ["m1","1","2","11"] | ["1"] | 1 |
| 27 | ["1","2"] | ["28"] | 1 |
| 39 | [] | ["33"] | 1 |
+----+---------------------+---------+----------+
3 rows in set (0.00 sec)

因此,如果我选择 id1,我需要获得计数结果 3(忽略 m1)。我的所有排序值都是从 1 到 99999 的需要计数的数字,所有标记将从 m1 到 m99999 开始,计数时需要忽略。

下面是例子:

["m1","1","2","11","m2","12","31"] => count will be 5

["1","m1","m2","m3"] => count will be 1

因此忽略所有以 m 开头的字符串并计算 JSON 值中的所有其他数字。

我怎样才能在 MySQL 中做到这一点?子字符串? JSON_SEARCH?我不知道是否有人可以给我提示或示例代码如何做到这一点..我需要这个来计算排序字段中的 channel 而不是计算标记(以 m 开头)以便我在点击的花束中有真实数量的 channel 。

谢谢。

最佳答案

您可以使用以下解决方案使用 JSON_SEARCHJSON_LENGTH :

SELECT JSON_LENGTH(sort) - IFNULL(JSON_LENGTH(JSON_SEARCH(sort, 'all', 'm%')), 0) 
FROM channels
WHERE id = 1;

如果没有 WHERE,您将得到以下输出:

3
2
0

关于不以m开头的MySQL Count值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50726015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com