• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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'

    结果:


    以下文字更新于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#版本 https://www.jb51.net/article/30211.htm

    上一篇:asp.net 计算字符串中各个字符串出现的次数
    下一篇:asp.net 图片验证码的HtmlHelper
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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