gpt4 book ai didi

mysql - 在MYSQL中查找特定字符串的出现次数

转载 作者:可可西里 更新时间:2023-11-01 07:57:08 25 4
gpt4 key购买 nike

考虑字符串 "55,33,255,66,55"

我正在寻找使用 mysql select 查询计算此字符串中特定字符(在本例中为“55”)出现次数的方法。

目前我正在使用下面的逻辑来计数

 
select CAST((LENGTH("55,33,255,66,55") - LENGTH(REPLACE("55,33,255,66,55", "55", ""))) / LENGTH("55") AS UNSIGNED)

但是这个的问题是,它统计了所有出现的 55 并且结果是 = 3,但所需的输出是 = 2。

有什么方法可以使这项工作正确吗?请提出建议。

注意:“55”是我们提供的输入,并且考虑值“55,33,255,66,55”来自数据库字段。

问候,

巴兰

最佳答案

您想在 ',55,' 上进行匹配,但需要担心第一个和最后一个位置。您可以使用在输入的前后添加逗号的技巧来解决这个问题:

select LENGTH('55,33,255,66,55') + 2 -
LENGTH(REPLACE(CONCAT(',', '55,33,255,66,55', ','), ',55,', 'xxx'))

返回 2

我使用 CONCAT 来前置和后置逗号(而不是在文本中添加文字),因为我假设您将在列而不是文字上使用它。

另请注意这些改进:

  • 删除 Actor - 它已经是数字
  • 用长度少一的字符串替换(即',55,'长度4到'xxx'长度3),结果不需要被分割——已经是正确的结果了
  • 2是因为前后加了两个逗号所以长度加了(不需要用CONCAT计算预替换长度)

关于mysql - 在MYSQL中查找特定字符串的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464249/

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