[SQL]找出 字串A 在 字串B 中出現的次數

[SQL]找出 字串A 在 字串B 中出現的次數

最近個人有個需求是要計算出已經用逗號串接的序號變數中,逗號出現的次數。

為何要這樣算呢? 因為這樣我就可以算出在那個序號變數中有幾個人。

參考網路「Count String Occurrence Function」的方式,只要將 字串B 的長度 減去 字串B 中的 字串A Replace成空字串的長度,再除以 字串A 的長度即可。

如下的Code,

USE tempdb
go

IF OBJECT_ID (N'dbo.fnCOUNT_STRING') IS NOT NULL
   DROP FUNCTION dbo.fnCOUNT_STRING
GO
CREATE FUNCTION [dbo].[fnCOUNT_STRING]
( @pInput VARCHAR(MAX), @pSearchString VARCHAR(50) )
RETURNS INT
BEGIN
    RETURN (LEN(@pInput) - 
            LEN(REPLACE(@pInput, @pSearchString, ''))) /
            LEN(@pSearchString)
END
GO

SELECT dbo.fnCOUNT_STRING('a,b,c', ',');
SELECT dbo.fnCOUNT_STRING('a||b||c||d', '||');


image

 

註:當然,原本的序號變數,如果用temp Table來儲存,只要算Count(*)就可知道了!

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^