sqlserver 查找某个字符在字符串中第N次出现的位置

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 例如:查找'A,' 在'A,B,C,D,A,B,C,D,C,D,B,A,C,E,'中第二次出现的位置怎么实现,SQL 中有这样的函数吗?   SQL code /* 方法很多,这里简单写一个 返回@find在@str中第(@n)次出现的位置。

例如:
查找'A,' 在'A,B,C,D,A,B,C,D,C,D,B,A,C,E,'中第二次出现的位置
怎么实现,SQL 中有这样的函数吗?

 

SQL code
/*
方法很多,这里简单写一个
返回@find在@str中第(@n)次出现的位置。没有第(@n)次返回0。
*/
create function fn_find(@find varchar(8000), @str varchar(8000), @n smallint)
    returns int
as
begin
    if @n < 1 return (0)
    declare @start smallint, @count smallint, @index smallint, @len smallint
    set @index = charindex(@find, @str)
    if @index = 0 return (0)
    else select @count = 1, @len = len(@find)
    while @index > 0 and @count < @n
        begin
            set @start = @index + @len
            select @index = charindex(@find, @str, @start), @count = @count + 1
        end
    if @count < @n set @index = 0
    return (@index)
end
go
declare @str varchar(100)
set @str='A,B,C,D,A,B,C,D,C,D,B,A,C,E'
select dbo.fn_find('A',@str,1) as one, dbo.fn_find('A',@str,2) as two, dbo.fn_find('A',@str,3) as three, dbo.fn_find('A',@str,4) as four
/*
one         two         three       four        
----------- ----------- ----------- ----------- 
1           9           23          0
*/

 

  

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6月前
|
SQL XML JSON
在 SQL Server 中使用字符串转义
【8月更文挑战第5天】
496 7
在 SQL Server 中使用字符串转义
|
5月前
|
SQL 数据采集 存储
SQL server 特殊字符"\u0000"处理
【9月更文挑战第12天】在 SQL Server 中,空字符 `\u0000` 可能导致数据处理问题。解决方法包括:1) 查找包含该字符的数据,使用 `LIKE &#39;%\u0000%&#39;` 进行查询;2) 替换该字符,使用 `REPLACE` 函数将其替换为空或其他字符;3) 在应用程序中验证和清理输入数据,防止其插入数据库;4) 注意数据类型、索引性能及数据库设计,确保数据质量和可靠性。
297 0
|
6月前
|
SQL 数据采集 存储
"揭秘SQL Server中REPLACE函数的神奇力量!一键替换字符串,解锁数据处理的无限可能,你还在等什么?"
【8月更文挑战第20天】SQL Server 的 REPLACE 函数是处理字符串的强大工具,用于在查询中替换字符串的部分内容。基本语法为 `REPLACE(string_expression, string_pattern, string_replacement)`。例如,可将员工邮箱从 `@example.com` 替换为 `@newdomain.com`。支持多级嵌套替换与变量结合使用,适用于动态生成查询。注意大小写敏感性及全局替换特性。掌握 REPLACE 函数能有效提升数据处理能力。
320 0
|
9月前
|
XML 数据格式
【sqlserver】带分隔符字符串和多行互相转化
【sqlserver】带分隔符字符串和多行互相转化
177 0
|
SQL
sql server从某个字符开始截取后面的字符串
sql server从某个字符开始截取后面的字符串
184 0
sqlserver 截取字符串中的汉字
sqlserver 截取字符串中的汉字
217 0
|
SQL
SQLSERVER中分割字符串成多列
SQLSERVER中分割字符串成多列
195 0
|
SQL 数据库 数据安全/隐私保护
VS2017调用SQL server 2019 和C++连接语句字符串
VS2017调用SQL server 2019 和C++连接语句字符串
VS2017调用SQL server 2019 和C++连接语句字符串
|
SQL Oracle 关系型数据库