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

Tsql 如何计算SQL列中一组字符的实例数,tsql,wildcard,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, '

我需要计算每行中一组字符(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', ''), 'ı', ''))...
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ü]%'

但是,随着查询的不断增长,它会变得混乱。有没有更好的通配符或其他方法

我实际需要的是具有特定数量的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 LENGTH(col) - LENGTH(REPLACE(REPLACE(REPLACE(col, 'a', ''), 'e', ''), 'ı', ''))...
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ü]%'

等等……

我想你应该读一下这篇文章,很高兴见到CLR UDF。我将在以后的项目中使用它。我现在正在使用一种更简单的方法来解决我的实际问题。当我在寻找实际问题的答案时,我发现自己在使用一些方法来计算字符,然后替换字符,然后是CLR UDF,然后是正则表达式。。。