博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql 查找某个字符在字符串中第N次出现的位置
阅读量:4979 次
发布时间:2019-06-12

本文共 864 字,大约阅读时间需要 2 分钟。

oracle中可以使用instr() 方法实现.

/*
方法很多,这里简单写一个
返回@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
/*

转载于:https://www.cnblogs.com/linjt0416/articles/5830599.html

你可能感兴趣的文章
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
centos iptables
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>