[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', '||');
註:當然,原本的序號變數,如果用temp Table來儲存,只要算Count(*)就可知道了!
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^