在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
接下来拆分这一串字符串,每个字符插入一个表变量中,最后使用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' 结果:
复制代码 代码如下: 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.ogeek.net/article/30211.htm |
请发表评论