我需要计算每一行中一组字符(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', ''), 'ı', ''))...
然而,随着它继续增长,这个查询变得混乱。有没有更好的方法使用通配符或其他东西?
答案 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ü]%'
等等......