SQL server 如何截取特定字符第二次出现的前几位

SQL server 如何截取特定字符第二次出现的前几位,第1张

你好的!

with t(id) as

(select 'S9-110-2' union all

select 'S10-031-1' union all

select 'S10' union all

select 'S12-022' union all

select 'S12-022-1-2')

select id,

       substring(id,1,(case when charindex('-',id,-1) = 0 then 99 else charindex('-',id,-1) end))+

       substring(substring(id,(case when charindex('-',id,-1) = 0 then 99 else charindex('-',id,-1) end)+1,999),1,(case when charindex('-',substring(id,charindex('-',id,-1)+1,999)) = 0 then 99 else charindex('-',substring(id,charindex('-',id,-1)+1,999)) end)-1),

   case when charindex('-',substring(id,charindex('-',id,-1)+1,999)) = 0 then 99 else charindex('-',substring(id,charindex('-',id,-1)+1,999)) end lens

   from t

你试试吧!

望采纳!

patindex(pattern,expression) 精确匹配,完全匹配1,不完全匹配0 例如:patindex('aa','aa') 返回1 完全匹配 patindex('aa','aab') 返回0 不完全匹配 patindex(%pattern%,expression)模糊匹配,返回从第几位开始匹配 CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。 这两个函数都带有2个参数: 1 希望获取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字符串。使用 CHARINDEX,模式是字面字符串(不能包含通配符)。 2 字符串值表达式(通常为列名)。 例如:patindex('%aa%','ssaaa') 返回3 模糊从第三位开始匹配 patindex('%aa','ssddaa') 返回5 模糊从第五位开始匹配 patindex('%aa','ssddaaa') 返回6 模糊从第六位开始匹配 patindex('%aa%','ssddaaa') 返回5 模糊从第五位开始匹配 charindex(pattern,expression)精确匹配,返回第一个满足条件的下标 例如:charindex(aa,aas) 返回1 从第一位开始精确匹配 charindex(aa,saas) 返回2 从第二位开始精确匹配 charindex(aa,saaas) 返回2 从第二位开始精确匹配 charindex(aa,sas) 返回0 没有完全精确匹配的 函数多试试就知道其用法了,多实践

以上就是关于SQL server 如何截取特定字符第二次出现的前几位全部的内容,包括:SQL server 如何截取特定字符第二次出现的前几位、SQLserver中字符串查找功能patindex和charindex的区别、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9596411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存