
正文
【SQL Server 学习系列】-- 获取字符串中出现某字符的次数及字符某次出现的下标
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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'))
DROP FUNCTION [dbo].IndexNumOfStr
GOCREATE 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)







