asp.net計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù)
更新時(shí)間:2012年05月03日 02:21:14 作者:
計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù),可以這樣子,先判斷輸入的字符串是不是數(shù)字組成,還是否包含有其它字符
接下來拆分這一串字符串,每個(gè)字符插入一個(gè)表變量中,最后使用GROUP BY進(jìn)行分組。
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
--以下函數(shù)可參考:http://www.cnblogs.com/insus/archive/2011/06/25/2090231.html
IF [dbo].[IsInteger] (SUBSTRING(@Value, @I, 1)) = 0
BEGIN
RAISERROR('傳入字符串包含其它字符,不完全是數(shù)字。',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
--以下函數(shù)可參考: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('傳入字符串包含其它字符,不完全是數(shù)字。',16,1)
RETURN
END
SELECT [Str],COUNT([Str]) AS [Num] FROM @dum GROUP BY [Str]
END
以下內(nèi)容于2012-04-29 10:44分添加:
如果想?yún)⒖糃#版本 http://www.dbjr.com.cn/article/30211.htm
復(fù)制代碼 代碼如下:
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
--以下函數(shù)可參考:http://www.cnblogs.com/insus/archive/2011/06/25/2090231.html
IF [dbo].[IsInteger] (SUBSTRING(@Value, @I, 1)) = 0
BEGIN
RAISERROR('傳入字符串包含其它字符,不完全是數(shù)字。',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:
復(fù)制代碼 代碼如下:
EXECUTE [dbo].[CalNumOfChtInStr] '5487554127489423454'
結(jié)果:
以下文字更新于2012-02-24 09:40
分析以上的存儲(chǔ)過程,考慮到性能問題,它在判斷是否包含有其它字符時(shí),循環(huán)一次字符串,然后又循環(huán)一次將每一個(gè)字符插入表變量中。以下修改正此點(diǎn)只做循環(huán)一次。
復(fù)制代碼 代碼如下:
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
--以下函數(shù)可參考: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('傳入字符串包含其它字符,不完全是數(shù)字。',16,1)
RETURN
END
SELECT [Str],COUNT([Str]) AS [Num] FROM @dum GROUP BY [Str]
END
以下內(nèi)容于2012-04-29 10:44分添加:
如果想?yún)⒖糃#版本 http://www.dbjr.com.cn/article/30211.htm
相關(guān)文章
asp.net MVC實(shí)現(xiàn)簡(jiǎn)單的上傳功能
MVC中上傳變得越來越容易,可是對(duì)于新手這個(gè)也還是不知道如何實(shí)現(xiàn),以下方式實(shí)現(xiàn)MVC的上傳功能,以下2種方法都是可以實(shí)現(xiàn)的,其中的代碼參考了藍(lán)色小鋪和重典的文章。2009-11-11某個(gè)aspx頁(yè)面突然死了連日志也沒有的解決方法
某個(gè)aspx頁(yè)面突然死了連日志也沒有,朋友提醒event viewer里看看,果然錯(cuò)誤在那里,有此情況的朋友可以參考下2013-08-08.NET的DateTime函數(shù)獲取上個(gè)月的起始和截止時(shí)間的方法
這篇文章主要介紹了NET的DateTime函數(shù)獲取上個(gè)月的起始和截止時(shí)間的方法,可廣泛使用于報(bào)表中的時(shí)間自動(dòng)選擇功能,是非常實(shí)用的技巧,需要的朋友可以參考下2015-01-01Asp.net core利用dynamic簡(jiǎn)化數(shù)據(jù)庫(kù)訪問
這篇文章介紹了Asp.net core利用dynamic簡(jiǎn)化數(shù)據(jù)庫(kù)訪問的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07