【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)
时间: 2025-01-07 04:15:01

【SQL Server 学习系列】-- 获取字符串中出现某字符的次数及字符某次出现的下标的相关文章

【SQL Server 学习系列】-- sql 随机生成中文名字

原文:[SQL Server 学习系列]-- sql 随机生成中文名字 1 DECLARE @fName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 姓氏 2 DECLARE @lName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 名字 3 4 INSERT @fName VALUES 5 ('赵'),('钱'),('孙'),('李')

学习ASP .NET MVC5官方教程总结(五)使用SQL Server LocalDB创建连接字符串

学习ASP .NET MVC5官方教程总结(五)使用SQL Server LocalDB创建连接字符串 在上一章中,我们创建了MovieDBContext类来连接数据库.处理Movie 对象和数据库记录的映射.但是我们没有指定使用什么数据库,也没指定使用哪个数据库.其实,在我们没有指定数据库的时候,Entity Framework 默认使用LocalDB . 在本节中我们将介绍如何在Web.config 文件中添加一个数据库连接. LocalDB 是SQL Server Express 数据库引

(转) SQL Server编程系列(1):SMO介绍

最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见,有也是一些零星的应用,特别是SSIS部分国内外的文章大都是讲解如何拖拽控件的,在开发过 程中周公除了参阅SQL Server帮助文档.MSDN及StackOverFlow等网站,这些网站基本上都是英文的,为了便于一些英文不好的开发者学习,周公在自己的理解上 加以整理成系列,不到之处请大家谅解. SM

SQL Server编程系列(1):SMO介绍

原文:SQL Server编程系列(1):SMO介绍 续篇:SQL Server编程系列(2):SMO常用对象的有关操作 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见,有也是一些零星的应用,特别是SSIS部分国内外的文章大都是讲解如何拖拽控件的,在开发过程中周公除了参阅SQL Server帮助文档.MSDN及StackOverFlow等网站,这

SQL Server虚拟化系列(3)&mdash;&mdash;构建理想的基于VMware的SQL Server虚拟机

虚拟化变得越来越常见,并且在不了解虚拟化如何工作的情况下,DBA在尝试解决性能问题时会出现盲点,例如减少资源争用或改进备份和恢复操作等. 在本文中我们将主要讲述为您的SQL Server工作负载构建理想的基于VMware的虚拟机.我们的下一篇文章将介绍怎么样在Hyper-V上构建对应的SQL Server虚拟化环境. 现在,作为DBA,您可能没有访问权限来创建用于SQL Server的新虚拟机.这些操作可以交给您的VM管理员,他们将为您部署合适的VM环境. 以下详细信息适用于在Windows S

Sql Server来龙去脉系列之一 目录篇

不要做一个只懂数据库查询的程序猿,学习数据库我们不要只知其一不知其二.之前看了下<Microsoft SQL Server 2008 Internals>,才知道数据库是怎么样的架构以及数据库使用了哪些网络传输协议,受益不浅值得自己花时间继续去深入研究,也推荐这本书给需要学习数据库的同学看.另外,给大家分享下这两天学习的一些心得:学.NET就得好好看msdn. 之前在博客园看了很多介绍ASP.NET在IIS的运行管道的文章,但我自己觉得还是msdn描述的最直接 (https://msdn.mi

Sql Server来龙去脉系列之四 数据库和文件

在讨论数据库之前我们先要明白一个问题:什么是数据库? 数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多的数据库.一个数据库实例最多能创建32767个数据库,但是按照实际情况,一般设计是不会达到这个限制值. 为了更明显地说明数据库,数据库包含了以下属性和功能: *. 它是很多对象的集合,比如表.视图.存储过程.约束.对象集合的最大值是2(31) - 1(超过2百亿).一般对象的数量在几百至一万. *. 它维持拥有的用

Sql Server来龙去脉系列之二 框架和配置

数据库对象 数据库维持了一系列表存储所有对象.数据类型/约束/配置项/资源等,在2008种我们叫他们为system base tables,并且这些表我们默认是看不到的.我们可以通过管理员登陆数据库,然后执行脚本: USE master; SELECT name FROM sys.objects WHERE type_desc = 'SYSTEM_TABLE'; 能查看到几十条数据.一般我们是不能查看到这些表里边的任何数据,只有通过DAC方式连接数据库才能查看到数据.这些数据主要被数据库引擎使用

SQL Server系统函数:字符串函数

原文:SQL Server系统函数:字符串函数 1.字符转化为ASCII,把ASCII转化为字符,注意返回的值是十进制数 select ASCII('A'),ASCII('B'),ASCII('a'),ASCII('b'),ASCII('?') select CHAR(65),CHAR(66),CHAR(97),CHAR(98),CHAR(63) 2.unicode字符转化为整数,把整数转化为unicode字符 select UNICODE('A'),UNICODE('B'),UNICODE('