随笔 - 30  文章 - 0  评论 - 36  阅读 - 11万

SQL 截取成对符号间 且包含指定关键字的内容

截取两个“|”之间 包含 @key 关键字的 内容,用于字符串的分段截取

/*
 截取两个‘|’内,并且包含关键字@key的字符串
 */
Create function [dbo].[getStrByKey](@v nvarchar(200),@key nvarchar(100))
returns nvarchar(200)
as
begin
  
 declare @re nvarchar(200)
 set @re=''
  
--起始位置
 declare @bg int
 set @bg=0
--结束位置
 declare @ed int
 set @ed=0
     
 while(@v!='')
 begin
    --第一个|的位置
    select @bg=patindex('%|%',@v)
    --第二个|的位置
    select @ed=patindex('%|%',SUBSTRING(@v,@bg+1,LEN(@v)))
    if @ed=0 or @bg=0
    begin
        return ''
    end
    --@bg和@ed位置中间的字符串内容
    set @re=substring (@v,@bg,@ed)
 
    --判断是否包含@key
    if charindex(@key,@re)>0
        begin
            set @v=''
        end
    else
        begin
 
            --继续从上面截取位置后的字符串开始查询
            set @v=SUBSTRING(@v,@bg+@ed,len(@v))       
            set @re='' 
        end
 end
  
 return @re
end

  

posted on   忧郁的匹格  阅读(1027)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
阅读排行:
· DeepSeek V3 两周使用总结
· 回顾我的软件开发经历(1)
· C#使用yield关键字提升迭代性能与效率
· 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解
· 4. 使用sql查询excel内容
< 2011年7月 >
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

点击右上角即可分享
微信分享提示