当前位置:Gxlcms > asp.net > asp.net计算一串数字中每个数字出现的次数

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

时间:2021-07-01 10:21:17 帮助过:33人阅读

接下来拆分这一串字符串,每个字符插入一个表变量中,最后使用GROUP BY进行分组。
代码如下:
  1. <br>CalNumOfChtInStr <br>SET ANSI_NULLS ON <br>GO <br>SET QUOTED_IDENTIFIER ON <br>GO <br>-- ============================================= <br>-- Author: Insus.NET <br>-- Create date: 2012-02-23 <br>-- Description: Calculate the number of characters in the string <br>-- ============================================= <br>CREATE PROCEDURE [dbo].[CalNumOfChtInStr] <br>( <br>@Value NVARCHAR(MAX) <br>) <br>AS <br>BEGIN <br>DECLARE @dum TABLE ([Str] NVARCHAR(2)) <br>DECLARE @I INT = LEN(@Value),@J INT = LEN(@Value) <br>WHILE @I > 0 <br>BEGIN <br>--以下函数可参考:http://www.cnblogs.com/insus/archive/2011/06/25/2090231.html <br>IF [dbo].[IsInteger] (SUBSTRING(@Value, @I, 1)) = 0 <br>BEGIN <br>RAISERROR('传入字符串包含其它字符,不完全是数字。',16,1) <br>RETURN <br>END <br>SET @I = @I - 1 <br>END <br>WHILE @J > 0 <br>BEGIN <br>INSERT INTO @dum VALUES(SUBSTRING(@Value, @J, 1)) <br>SET @J = @J - 1 <br>END <br>SELECT [Str],COUNT([Str]) AS [Num] FROM @dum GROUP BY [Str] <br>END <br> <br>Demo: <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>EXECUTE [dbo].[CalNumOfChtInStr] '5487554127489423454' <br><br></li><li><p>结果:</p></li><li><p><img height="266" alt="" src="https://img.gxlcms.com//Uploads-s/new/2019-09-19-201919/20120503022110627.jpg" width="194" border="0" longdesc=""><br>以下文字更新于2012-02-24 09:40 <br>分析以上的存储过程,考虑到性能问题,它在判断是否包含有其它字符时,循环一次字符串,然后又循环一次将每一个字符插入表变量中。以下修改正此点只做循环一次。 <br><span><u></u></span> 代码如下:</p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>CalNumOfChtInStr <br>SET ANSI_NULLS ON <br>GO <br>SET QUOTED_IDENTIFIER ON <br>GO <br>-- ============================================= <br>-- Author: Insus.NET <br>-- Create date: 2012-02-23 <br>-- Update date: 2012-02-24 <br>-- Description: Calculate the number of characters in the string <br>-- ============================================= <br><br>ALTER PROCEDURE [dbo].[CalNumOfChtInStr] <br>( <br>@Value NVARCHAR(MAX) <br>) <br>AS <br>BEGIN <br>DECLARE @dum TABLE ([Str] NVARCHAR(2)) <br>DECLARE @I INT = LEN(@Value) <br>WHILE @I > 0 <br>BEGIN <br>INSERT INTO @dum VALUES(SUBSTRING(@Value, @I, 1)) <br>SET @I = @I - 1 <br>END <br><br>--以下函数可参考:http://www.cnblogs.com/insus/archive/2011/06/25/2090231.html <br>IF EXISTS(SELECT TOP 1 1 FROM @dum WHERE [dbo].[IsInteger]([Str]) = 0) <br>BEGIN <br>RAISERROR('传入字符串包含其它字符,不完全是数字。',16,1) <br>RETURN <br>END <br>SELECT [Str],COUNT([Str]) AS [Num] FROM @dum GROUP BY [Str] <br>END <br> <br>以下内容于2012-04-29 10:44分添加: <br><br>如果想参考C#版本 //www.gxlcms.com/article/30211.htm<p></p></li><li> </li><li> </li></ol></pre></li></ol></pre>

人气教程排行