计算整数在列中出现的次数

xal*_*alx 3 sql sql-server count

我试图找到一种方法来计算整数的结束并显示尾随值.例如,我有下表:

CREDIT
======
1051000
10000
2066
16000
Run Code Online (Sandbox Code Playgroud)

我希望能够计算'0'出现的次数,并最终获得如下结果

CREDIT              CntOccuranceVals
======              ======
1051000             3
10000               4
2066                0
16000               3
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用一个查找所有'0'的查询,但是我遇到的问题是第一行它返回4而不是三,因为它搜索整行而不是尾随.这是我尝试用来查找事件计数的内容

DECLARE @LongSequence INT(MAX)
DECLARE @FindSubString INT(MAX)
SET @LongSequence = CREDIT
SET @FindSubString = '0'
SELECT (LEN(@LongSequence) - LEN(REPLACE(@LongSequence, @FindSubString, '')))     CntReplacedVals,
(LEN(@LongSequence) - LEN(REPLACE(@LongSequence, @FindSubString, '')))/LEN(@FindSubString) CntOccuranceVals
Run Code Online (Sandbox Code Playgroud)

有没有办法我只能找到尾随0而不是值中间的那些?

编辑:错字

bum*_*mmi 7

您可以像这样使用Reverse和Patindex:

Declare @a Table (i int)
insert into @a
Select 123000
union
Select 123001
union
Select 100000
union
Select 123001

Select i, PatIndex('%[1-9]%',Reverse(Cast(i as Varchar(50)))) - 1  as  CntOccuranceVals
from @a
Run Code Online (Sandbox Code Playgroud)

  • 并阐述了@MartinSmith所提出的观点,[这是另一个小提琴](http://sqlfiddle.com/#!3/48e5d/7) (2认同)