【问题标题】:How can you find the number of occurrences of a particular character in a string using sql?如何使用 sql 查找字符串中特定字符的出现次数?
【发布时间】:2010-09-22 04:33:30
【问题描述】:

如何使用 sql 查找字符串中特定字符的出现次数?

示例:我想查找字母“d”在此字符串中出现的次数。

declare @string varchar(100)
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa'

【问题讨论】:

  • 哪个数据库?也许是 MySQL?
  • 请给它一个更具描述性的标题,您会看到更好的结果。
  • 答案可能是特定于数据库的,所以请告诉大家您使用的是什么数据库。

标签: sql string search


【解决方案1】:

对于我们那里的所有 Sybase ASE 15 恐龙,您需要将 '' 替换为 null,即

SELECT LEN(@string) - LEN(REPLACE(@string, 'd', null)) AS D_Count

【讨论】:

  • 作为处理旧 Sybase 安装的人,非常感谢...
【解决方案2】:

如果你想让它更通用一点,你应该除以你要找的东西的长度。像这样:

declare @searchstring varchar(10);
set @searchstring = 'Rob';

select original_string, 
(len(orginal_string) - len(replace(original_string, @searchstring, '')) 
   / len(@searchstring)
from someTable;

这是因为每次找到“Rob”时,都会删除三个字符。因此,当您删除六个字符时,您会找到两次“Rob”。

【讨论】:

  • 这表明您正在查询一个名为 someTable 的表,该表有一个名为 original_string 的列。并且该原理适用于任何数据库,您只需要找到等效的功能即可。
【解决方案3】:

给你:

declare @string varchar(100)
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa'
SELECT LEN(@string) - LEN(REPLACE(@string, 'd', '')) AS D_Count

【讨论】:

  • 可爱,我正在考虑使用 charindex 进行迭代,我更喜欢这个。
  • 我同意 vfilby 并且可以确认此代码在 SQL Server 2005 和 2008 中有效。
  • 我是 MySql 用户。而且绝对不是大师。 MySQL 中 D_Count 的等效值是多少?
  • D_Count 只是该列的别名。我不知道你是如何在 MySql 中设置的
  • 您还应该除以您要查找的内容的长度。该脚本有效,因为“d”只有一个字符长。如果您正在寻找“as”,则必须将答案除以二。
猜你喜欢
  • 2017-03-01
  • 1970-01-01
  • 2019-02-28
  • 2012-12-26
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
相关资源
最近更新 更多