WEB开发网
开发学院数据库MSSQL Server 用TSQL求子串在父串中出现的次数 阅读

用TSQL求子串在父串中出现的次数

 2010-08-16 15:45:10 来源:WEB开发网   
核心提示:优化的方法上面讲的只是在网络上流传最广泛的方法,那么想要精炼代码,用TSQL求子串在父串中出现的次数(2),寻找更便捷和 高效的方法也是可行,下面再介绍两种较便捷的实现方式,网络资源的作用主要 给我们借鉴,扩展我们的思路,<方法一>SET ANSI_NULLS ONGOSET QUOTED_IDENTIFI

优化的方法

上面讲的只是在网络上流传最广泛的方法,那么想要精炼代码,寻找更便捷和 高效的方法也是可行。下面再介绍两种较便捷的实现方式。

<方法一>

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*
描述:
利用字符串长度计算字符出现次数
DEMO:
SELECT dbo.f_get_char_repeat_count('df ththth','tht')
*/
CREATE FUNCTION [dbo].[f_get_char_repeat_count]
(@str VARCHAR(8000),
@substr VARCHAR(8000)
)
RETURNS INT
BEGIN
RETURN (LEN(@str)-LEN(REPLACE(@str,@substr,'')))/LEN (@substr)
END

<方法二>SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
描述:利用长度差值求重复次数
DEMO:
SELECT fn_get_char_repeat_count_by_add_char ('ahahaahde','ah')
*/
CREATE FUNCTION [dbo]. [fn_get_char_repeat_count_by_add_char](
@str varchar(8000),--父串
@chr varchar(8000) --子串
) RETURNS INT
AS
BEGIN
RETURN(len(replace(@str,@chr,@chr+' '))-len(@str))
END

上面的<方法一>是用空字符替换父字符串中出现的子串,用剩余字符串 的长度与子字符串的长度求商;<方法二>是把为父字符串中出现子字符串的 地方都增加个空格,用替换后的父字符串长度减去原父字符串的长度。

总结

面对日常的工作需求,针对具体的问题,关键在于思路的不同。网络上丰富的 资源是可以借鉴的,但同时要注意辨别这些资源的可用性。网络资源的作用主要 给我们借鉴,扩展我们的思路,不应该直接投入使用。

上一页  1 2 

Tags:TSQL 求子 出现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接