手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net计算一串数字中每个数字出现的次数
asp.net计算一串数字中每个数字出现的次数
摘要:接下来拆分这一串字符串,每个字符插入一个表变量中,最后使用GROUPBY进行分组。复制代码代码如下:CalNumOfChtInStrSETA...

接下来拆分这一串字符串,每个字符插入一个表变量中,最后使用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计算一串数字中每个数字出现的次数1

以下文字更新于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

以下内容于2012-04-29 10:44分添加:

如果想参考C#版本 http://www.jb51.net/article/30211.htm

【asp.net计算一串数字中每个数字出现的次数】相关文章:

asp.net下使用DIME协议上传文件

asp.net对URL含有中文参数的转换

在asp.net下实现Option条目中填充前导空格的方法

asp.net验证一个字符串是否符合指定的正则表达式

asp.net开发微信公众平台之验证消息的真实性

asp.net导出excel的简单方法

asp.net 生成数字和字母组合的随机数

Asp.Net中文本换行

asp.net学习中发现的比较完整的流程

asp.net下url传递中文的解决方案

精品推荐
分类导航