SQL SERVER 查找某个字符在字符串中出现的次数
2011-07-15 21:37
246 查看
首先需要建立一个数字辅助表dbo.nums,使用nums表将字符串扩充为字符串长度行,然后对每一行进行字符串截取, 最后统计字符出现的次数.
View Code
-- Generating Nums Table
-- 来源:SQL SERVER 2005 技术内幕
SET NOCOUNT ON;
USE tempdb;
GO
IF OBJECT_ID('dbo.Nums') IS NOT NULL
DROP TABLE dbo.Nums;
GO
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;
INSERT INTO Nums VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END
INSERT INTO dbo.Nums
SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: xx
-- Create date: 2011年7月15日21:07:32
-- Description: 查找字符串中某个字符出现的次数
-- 思路:使用nums表将字符串扩充为字符串长度行,然后对每一行进行字符串截取,
-- 最后统计字符出现的次数
-- =============================================
CREATE FUNCTION [dbo].[fnQueryCharCountFromString]
(
@Str NVARCHAR(MAX), --待查找字符串
@Spilt CHAR(1) --需查找的字符
)
RETURNS INT
AS
BEGIN
DECLARE @Count INT
SELECT @Count = COUNT(*)
FROM (
SELECT SUBSTRING(s,n,1) AS split
FROM (
SELECT @Str AS s,n
FROM dbo.nums
WHERE n < LEN(@Str)) D
) A
WHERE A.split = @Spilt
RETURN @Count;
END
如果需要查找某n个字符出现的次数,在SUBSTRING中截取的长度取n即可。
View Code
-- Generating Nums Table
-- 来源:SQL SERVER 2005 技术内幕
SET NOCOUNT ON;
USE tempdb;
GO
IF OBJECT_ID('dbo.Nums') IS NOT NULL
DROP TABLE dbo.Nums;
GO
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;
INSERT INTO Nums VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END
INSERT INTO dbo.Nums
SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: xx
-- Create date: 2011年7月15日21:07:32
-- Description: 查找字符串中某个字符出现的次数
-- 思路:使用nums表将字符串扩充为字符串长度行,然后对每一行进行字符串截取,
-- 最后统计字符出现的次数
-- =============================================
CREATE FUNCTION [dbo].[fnQueryCharCountFromString]
(
@Str NVARCHAR(MAX), --待查找字符串
@Spilt CHAR(1) --需查找的字符
)
RETURNS INT
AS
BEGIN
DECLARE @Count INT
SELECT @Count = COUNT(*)
FROM (
SELECT SUBSTRING(s,n,1) AS split
FROM (
SELECT @Str AS s,n
FROM dbo.nums
WHERE n < LEN(@Str)) D
) A
WHERE A.split = @Spilt
RETURN @Count;
END
如果需要查找某n个字符出现的次数,在SUBSTRING中截取的长度取n即可。
相关文章推荐
- js查找字符串中出现次数最多的字符
- 【C】 查找字符串中某个字符出现的次数【两种思路,关于指针】
- 查找字符串中,相同字符出现的次数!
- sqlserver分隔字符串,查找父类下所有子类,删除重复字符串,计算一字符串在别一字符中出现的次数
- 查找一个字符串中各个字符出现的次数,用TreeMap实现
- c语言练习(3)--查找字符出现次数和替换字符串
- 输入一个字符串,查找出出现次数最多的字符
- JS查找字符串中出现次数最多的字符
- 从字符串中查找字符出现次数的方法和性能对比
- 查找字符在字符串中出现2次(次数自己定)字符。。。
- 查找字符串中某字符出现次数的方法
- 查找一个字符串里,出现次数最多的字符,时间复杂度O(n)
- 查找某个字符在字符串中出现的次数
- 查找字符串中指定字符出现的次数:性能比较
- 查找出字符串中出现最多的字符及其出现的次数
- Javascript 查找字符串中出现最多的字符和出现的次数
- 20171101(查找sdddrtkjsfkkkasjdddj字符串中,出现次数最多的字符和次数。)
- 查找字符串中出现最多的字符和它出现的次数和查找某个字符在字符串中出现的次数
- javascript查找字符串中出现最多的字符和次数的小例子
- Js查找字符串中出现次数最多的字符及个数实例解析