zoukankan      html  css  js  c++  java
  • 【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)
  • 相关阅读:
    2019春季助教学期总结
    第二次实验设计报告
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
    万恶的第七周作业
    第六周作业
    堆积如山的第五周作业
  • 原文地址:https://www.cnblogs.com/elliot-lei/p/7844647.html
Copyright © 2011-2022 走看看