sql - 计算一个整数在一列中出现的次数

标签 sql sql-server count

我正在尝试找到一种方法来计算整数的末尾并显示尾随值。例如,我有下表:

CREDIT
======
1051000
10000
2066
16000

我希望能够计算“0”出现的次数并最终得到如下结果

CREDIT              CntOccuranceVals
======              ======
1051000             3
10000               4
2066                0
16000               3

现在我已经尝试使用将找到所有“0”的查询,但我面临的问题是第一行返回 4 而不是 3,因为它搜索整行而不是尾随。这是我尝试用来查找出现次数的方法

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?

编辑:打字错误

最佳答案

您可以像这样使用 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

关于sql - 计算一个整数在一列中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18989775/

相关文章:

sql - 如何比较 SQL Server 中的两个时间戳作为日期

mysql - sql查询出了什么问题?

Java使用线程读取两个文件中的行数

sql-server - 使用变量转换数据类型

sql - 如何将sql数据库与ignite集群连接来同步数据?

c# - 为什么我的插入表行的 SQL 查询不能正常工作?

sql - VARCHAR2 与 NUMBER 之间的性能差异

sql-server - 没有列名列表的tsql标识插入

java - 使用合并排序从文本文件中读取的 100000 个整数的反转计数。但无法获得正确的反转计数

sql - 对 SQL 语句中的特定行应用特定条件