如何计算SQL列中的字符实例

cin*_*ndi 99 sql t-sql string symbols count

我有一个sql列,它是一个100'Y'或'N'字符的字符串.例如:

YYNYNYYNNNYYNY ...

获得每行中所有'Y'符号计数的最简单方法是什么.

nic*_*ckf 290

这段代码适用于你有布尔值的特定情况:它回答"有多少非N?".

SELECT LEN(REPLACE(col, 'N', ''))
Run Code Online (Sandbox Code Playgroud)

如果在不同的情况下,您实际上是在尝试计算任何给定字符串中某个字符(例如"Y")的出现次数,请使用:

SELECT LEN(col) - LEN(REPLACE(col, 'Y', ''))
Run Code Online (Sandbox Code Playgroud)

  • 第二个是这里最好的答案.所有其余的都依赖于仅包含两个不同字符的字符串的特殊情况. (28认同)
  • 请注意:在T-SQL中,您需要使用LEN而不是LENGTH. (5认同)
  • @nickf SQL len函数修剪尾随空格,所以如果你在查找字符串中有多少个空格,让我们说'Hello'你会得到0.最简单的方法是在字符串之前添加一个尾随字符并调整len之类的所以.SELECT LEN(col +'〜') - LEN(REPLACE(col,'Y','')+'〜') (3认同)
  • 如果您担心尾随空格,请改用DATALENGTH函数。 (3认同)
  • @StevenWhite DATALENGTH返回使用的字节数。因此NVARCHAR将加倍。 (2认同)

Dav*_*und 85

如果ms sql

SELECT LEN(REPLACE(myColumn, 'N', '')) 
FROM ...
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果字符串中有"N"或"Y"以上,则可能不准确.请参阅nickf的解决方案以获得更强大的方法. (16认同)

小智 13

这给了我每次准确的结果......

这是在我的条纹字段...黄色,黄色,黄色,黄色,黄色,黄色,黑色,黄色,黄色,红色,黄色,黄色,黄色,黑色

  • 11黄色
  • 2黑色
  • 1红色
SELECT (LEN(Stripes) - LEN(REPLACE(Stripes, 'Red', ''))) / LEN('Red') 
  FROM t_Contacts
Run Code Online (Sandbox Code Playgroud)


小智 13

这将返回 N 出现的次数

select ColumnName, LEN(ColumnName)- LEN(REPLACE(ColumnName, 'N', '')) from Table


Aar*_*ake 12

DECLARE @StringToFind VARCHAR(100) = "Text To Count"

SELECT (LEN([Field To Search]) - LEN(REPLACE([Field To Search],@StringToFind,'')))/COALESCE(NULLIF(LEN(@StringToFind), 0), 1) --protect division from zero
FROM [Table To Search]
Run Code Online (Sandbox Code Playgroud)