gpt4 book ai didi

php - MySQL原生类似于PHP substr_count()

转载 作者:行者123 更新时间:2023-11-29 01:59:23 25 4
gpt4 key购买 nike

MySQL中有没有类似于PHP的函数substr_count()的函数?实际上,我需要知道一组中有多少项(例如,1,2,3 是 3 项)。

在搜索中,我没有发现任何原生于此的东西。因此,我使用方法 LENGTH()REPLACE() 做了一个解决方法。

SELECT LENGTH("1,2,3,4") - LENGTH(REPLACE("1,2,3,4", ",", "")) + 1;

但是失败集是空的。
但我可以用一个简单的 IF() 来解决这个问题。

所以,我正在寻找一些更本土的,例如:

SELECT SUBSTR_COUNT(",", "1,2,3,4") + 1;

或者,更好的是:

SELECT LENGTH_OF_SET("1,2,3,4");

一些解决方案的家伙?

编辑

因为有些疑惑,我会尝试举一些例子:

  • 1,2,3 有 3 个项目:1、2 和 3;
  • 100,200 有 2 个项目:100 和 200;
  • 1,2,4,9,16,25 有 6 个项目:1、2、4、9、16 和 25;

基本上,我想要的数字是逗号 + 1 的数量。我有这个值,但我想知道是否有本地方法可以做到这一点,或者比我做的成本更低。

最佳答案

没有任何 native 函数,您可以执行此操作。但是为了减轻一些痛苦并隐藏查询中的复杂性,您可以创建处理 NULL、空字符串等的 on 函数。

像这样

CREATE FUNCTION SUBSTR_COUNT
(
_delimiter VARCHAR(12),
_value VARCHAR(255)
) RETURNS INT
RETURN COALESCE(
CHAR_LENGTH(NULLIF(_value, ''))
- CHAR_LENGTH(REPLACE(NULLIF(_value, ''), COALESCE(_delimiter, ','), ''))
+ 1,
0);

然后享受它

SELECT id, SUBSTR_COUNT(',', value_set) number_of_values
FROM table1;

SELECT id, SUBSTR_COUNT(NULL, value_set) number_of_values
FROM table1;

示例输出:

| ID | NUMBER_OF_VALUES ||----|------------------||  1 |                3 ||  2 |                2 ||  3 |                6 ||  4 |                0 ||  5 |                0 |

这是 SQLFiddle 演示

关于php - MySQL原生类似于PHP substr_count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19173251/

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