SQL Server 学习系列-- 获取字符串中出现某字符的次数及字符某次出现的下标

Posted ㄌㄟ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 (NFN, NIF, NTF, NFS, NFT))
    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)

 

以上是关于SQL Server 学习系列-- 获取字符串中出现某字符的次数及字符某次出现的下标的主要内容,如果未能解决你的问题,请参考以下文章

如何学习高级ms sql server? [关闭]

SQL Server:获取具有附加数据的一系列值之间的最大值

SQL Server 2012学习笔记- - - 初识篇

如何获取SQL server数据库的连接字符串

如何从 SQL Server Express 获取连接字符串?

如何获取SQL server数据库的连接字符串