我试图找到一种方法来计算整数的结尾并显示尾随值。例如,我有下表:
CREDIT
======
1051000
10000
2066
16000
我希望能够计算'0'出现的次数并最终得到如下结果
CREDIT CntOccuranceVals
====== ======
1051000 3
10000 4
2066 0
16000 3
现在我尝试使用一个查找所有'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
有没有办法只找到尾随0而不是值中间的那些?
编辑:错字
答案 0 :(得分: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