【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
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)

 

转载于:https://www.cnblogs.com/elliot-lei/p/7844647.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值