服务器之家

服务器之家 > 正文

asp.net计算一串数字中每个数字出现的次数

时间:2019-10-04 19:59     来源/作者:asp.net教程网

接下来拆分这一串字符串,每个字符插入一个表变量中,最后使用GROUP BY进行分组。 

复制代码代码如下:


CalNumOfChtInStr 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author: Insus.NET 
-- Create date: 2012-02-23 
-- Description: Calculate the number of characters in the string 
-- ============================================= 
CREATE PROCEDURE [dbo].[CalNumOfChtInStr] 

@Value NVARCHAR(MAX) 

AS 
BEGIN 
DECLARE @dum TABLE ([Str] NVARCHAR(2)) 
DECLARE @I INT = LEN(@Value),@J INT = LEN(@Value) 
WHILE @I > 0 
BEGIN 
--以下函数可参考:http://www.cnblogs.com/insus/archive/2011/06/25/2090231.html 
IF [dbo].[IsInteger] (SUBSTRING(@Value, @I, 1)) = 0 
BEGIN 
RAISERROR('传入字符串包含其它字符,不完全是数字。',16,1) 
RETURN 
END 
SET @I = @I - 1 
END 
WHILE @J > 0 
BEGIN 
INSERT INTO @dum VALUES(SUBSTRING(@Value, @J, 1)) 
SET @J = @J - 1 
END 
SELECT [Str],COUNT([Str]) AS [Num] FROM @dum GROUP BY [Str] 
END 


Demo: 

复制代码代码如下:


EXECUTE [dbo].[CalNumOfChtInStr] '5487554127489423454' 

 

结果:

asp.net计算一串数字中每个数字出现的次数
以下文字更新于2012-02-24 09:40 
分析以上的存储过程,考虑到性能问题,它在判断是否包含有其它字符时,循环一次字符串,然后又循环一次将每一个字符插入表变量中。以下修改正此点只做循环一次。 

复制代码代码如下:


CalNumOfChtInStr 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author: Insus.NET 
-- Create date: 2012-02-23 
-- Update date: 2012-02-24 
-- Description: Calculate the number of characters in the string 
-- ============================================= 

ALTER PROCEDURE [dbo].[CalNumOfChtInStr] 

@Value NVARCHAR(MAX) 

AS 
BEGIN 
DECLARE @dum TABLE ([Str] NVARCHAR(2)) 
DECLARE @I INT = LEN(@Value) 
WHILE @I > 0 
BEGIN 
INSERT INTO @dum VALUES(SUBSTRING(@Value, @I, 1)) 
SET @I = @I - 1 
END 

--以下函数可参考:http://www.cnblogs.com/insus/archive/2011/06/25/2090231.html 
IF EXISTS(SELECT TOP 1 1 FROM @dum WHERE [dbo].[IsInteger]([Str]) = 0) 
BEGIN 
RAISERROR('传入字符串包含其它字符,不完全是数字。',16,1) 
RETURN 
END 
SELECT [Str],COUNT([Str]) AS [Num] FROM @dum GROUP BY [Str] 
END 

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部