主頁(yè) > 知識(shí)庫(kù) > asp.net計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù)

asp.net計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù)

熱門(mén)標(biāo)簽:山西防封卡電銷(xiāo)卡套餐 浙江外呼系統(tǒng)怎么安裝 銅川小型外呼系統(tǒng)運(yùn)營(yíng)商 海外地圖標(biāo)注門(mén)市標(biāo) 廈門(mén)商鋪地圖標(biāo)注 地圖標(biāo)注多個(gè)行程 云南外呼電銷(xiāo)機(jī)器人系統(tǒng) 陜西人工外呼系統(tǒng)哪家好 上海楊浦怎么申請(qǐng)申請(qǐng)400電話
接下來(lái)拆分這一串字符串,每個(gè)字符插入一個(gè)表變量中,最后使用GROUP BY進(jìn)行分組。
復(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ǔ)過(guò)程,考慮到性能問(wèn)題,它在判斷是否包含有其它字符時(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)⒖糃#版本 https://www.jb51.net/article/30211.htm

標(biāo)簽:孝感 常州 信陽(yáng) 許昌 萊蕪 西雙版納 自貢 朔州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù)》,本文關(guān)鍵詞  asp.net,計(jì)算,一串,數(shù)字,中,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于asp.net計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章