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

时间:2013-01-21 08:13:20

标签: tsql wildcard

我需要计算每一行中一组字符(aeıioöuü)的实例。

例如:

"linebreak" should return 4.
"indent" should return 2
"quote" should return 3

我可以用这个计算一个单个字符:

SELECT LENGTH(col) - LENGTH(REPLACE(col, 'a', ''))

我还找到了一种计算一组字符的方法:

SELECT LENGTH(col) - LENGTH(REPLACE(REPLACE(REPLACE(col, 'a', ''), 'e', ''), 'ı', ''))...

然而,随着它继续增长,这个查询变得混乱。有没有更好的方法使用通配符或其他东西?

1 个答案:

答案 0 :(得分:1)

我实际需要的是具有特定数量的a,e,ı,i,o,ö,u或ü的行;不是发生的次数。以下查询返回只有一个元音字符的行:

SELECT COUNT(*) AS cnt FROM [table]
WHERE col Like '%[aeıioöuü]%'
AND col NOT LIKE '%[aeıioöuü]%[aeıioöuü]%'

这会返回只有两个元音字符的行:

SELECT COUNT(*) AS cnt FROM [table]
WHERE col Like '%[aeıioöuü]%[aeıioöuü]%'
AND col NOT LIKE '%[aeıioöuü]%[aeıioöuü]%[aeıioöuü]%'

等等......