【SQL Server 學習系列】-- 獲取字符串中出現某字符的次數及字符某次出現的下標
阿新 • • 發佈:2017-11-16
nbsp pan urn ace server type char sel sql
DECLARE @Str NVARCHAR(500) = ‘1_BB_CC_DD_AA_EE_YY_WW_HH_GG‘ --// 1. 獲取下劃線在字符串中出現的次數 SELECT LEN(@Str) - LEN(REPLACE(@Str, ‘_‘, ‘‘)) --// 2. 獲取下劃線某次出現的位置下標 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N‘[dbo].[IndexNumOfStr]‘) AND type in (N‘FN‘, N‘IF‘, N‘TF‘, N‘FS‘, N‘FT‘)) DROPFUNCTION [dbo].IndexNumOfStr GO CREATE FUNCTION dbo.IndexNumOfStr ( @Str NVARCHAR(500), -- 字符串 @charStr NVARCHAR(50), -- 要查詢的字符 @num INT -- 第幾次出現 ) RETURNS INT AS BEGIN DECLARE @posIndex INT = 0 -- 出現的位置 DECLARE @i INT = 0 --查找次數 WHILE @i < @num BEGIN SET @i = @i + 1 SET @posIndex = CHARINDEX(@charStr, @Str, @posIndex + 1) IF @posIndex = 0 BEGIN RETURN 0 END END RETURN @posIndex END GO --// 測試結果 SELECT dbo.IndexNumOfStr(@Str, ‘_‘, 10)
【SQL Server 學習系列】-- 獲取字符串中出現某字符的次數及字符某次出現的下標