选择列有n个字符出现的记录

时间:2014-04-18 23:44:08

标签: sql sqlite count substr

我想知道这是否可以在sqlite中使用。

SELECT * FROM tbl WHERE substr_count(f, '*') = 5

它应该返回在" f"中有5个星号的记录。列,如

a*b**c**

****a*

等等

2 个答案:

答案 0 :(得分:2)

SELECT * FROM table WHERE length(f)-replace(f,'*','')= 5

答案 1 :(得分:1)

如果您的计数器或数字表只包含一个连续的整数列表,那么此解决方案很简单。这将是您填充一次但有许多用途的表。有了这个,你有:

Create Table Tally ( N int );

Insert Tally( N )

...

Select Z.<PrimaryKeyCol>, Sum( Z.Val )
From    (
        Select <PrimaryKeyCol>, 1 As Val
        From tbl
            Cross Join Tally As T
        Where substr( tbl.f, T.N, 1 )  = '*'
        ) As Z
Group By Z.<PrimaryKeyCol>
Having Sum( Z.Val ) = 5