步步为营-104-SQL语句(截取字符串)

Posted 逍遥小天狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了步步为营-104-SQL语句(截取字符串)相关的知识,希望对你有一定的参考价值。

按照指定字符截取字符串,截取出300

 

 业务需求:想比对图片中框线部分是否一致

第一步 从最后一个/截取到末尾

select top 1 reverse(substring(reverse(ProcessControlName),1,charindex(\'/\',reverse(ProcessControlName)) - 1)) from ProcessPublish;

--第二步 在第一步的基础上从最后一个.截取
select RTRIM(LTRIM(reverse(substring(reverse(ProcessControlName),1,charindex(\'/\',reverse(ProcessControlName)) - 1)))) as web端模板,RTRIM(LTRIM(reverse(substring(reverse(MobileFormTemplatePath),1,charindex(\'/\',reverse(MobileFormTemplatePath)) - 1)))) as 手机端模板, *
from ProcessPublish
where ProcessID >2489 --新增加的"华济建设"
and ProcessControlName != \'\' --模板不等于空,说明bpm发起的
and MobileFormTemplatePath != \'\'

 

--第三步 在第二步的基础上获取去掉.html字段
select top 1 (substring((substring(reverse(ProcessControlName),charindex(\'.\',reverse(ProcessControlName))+1,len(reverse(ProcessControlName))-charindex(\'.\',reverse(ProcessControlName)))),1,charindex(\'/\',(substring(reverse(ProcessControlName),charindex(\'.\',reverse(ProcessControlName))+1,len(reverse(ProcessControlName))-charindex(\'.\',reverse(ProcessControlName))))) - 1)) from ProcessPublish

最后,完成

select (substring((substring(reverse(ProcessControlName),charindex(\'.\',reverse(ProcessControlName))+1,len(reverse(ProcessControlName))-charindex(\'.\',reverse(ProcessControlName)))),1,charindex(\'/\',(substring(reverse(ProcessControlName),charindex(\'.\',reverse(ProcessControlName))+1,len(reverse(ProcessControlName))-charindex(\'.\',reverse(ProcessControlName))))) - 1)) as web端模板,
(substring((substring(reverse(MobileFormTemplatePath),charindex(\'.\',reverse(MobileFormTemplatePath))+1,len(reverse(MobileFormTemplatePath))-charindex(\'.\',reverse(MobileFormTemplatePath)))),1,charindex(\'/\',(substring(reverse(MobileFormTemplatePath),charindex(\'.\',reverse(MobileFormTemplatePath))+1,len(reverse(MobileFormTemplatePath))-charindex(\'.\',reverse(MobileFormTemplatePath))))) - 1)) as 手机端模板, *
from ProcessPublish
where ProcessID >2489 --新增加的"华济建设"
and ProcessControlName != \'\' --模板不等于空,说明bpm发起的
and MobileFormTemplatePath != \'\'
and (substring((substring(reverse(ProcessControlName),charindex(\'.\',reverse(ProcessControlName))+1,len(reverse(ProcessControlName))-charindex(\'.\',reverse(ProcessControlName)))),1,charindex(\'/\',(substring(reverse(ProcessControlName),charindex(\'.\',reverse(ProcessControlName))+1,len(reverse(ProcessControlName))-charindex(\'.\',reverse(ProcessControlName))))) - 1)) != (substring((substring(reverse(MobileFormTemplatePath),charindex(\'.\',reverse(MobileFormTemplatePath))+1,len(reverse(MobileFormTemplatePath))-charindex(\'.\',reverse(MobileFormTemplatePath)))),1,charindex(\'/\',(substring(reverse(MobileFormTemplatePath),charindex(\'.\',reverse(MobileFormTemplatePath))+1,len(reverse(MobileFormTemplatePath))-charindex(\'.\',reverse(MobileFormTemplatePath))))) - 1))

查出来有三处不一致

以上是关于步步为营-104-SQL语句(截取字符串)的主要内容,如果未能解决你的问题,请参考以下文章

sql语句,能够截取指定字段后面的一个字符串吗?

各位大神,MySQL截取字符串到某一制定位置,语句怎么写?

SQL语句截取字符串中最后的两个字怎么做?急用。在线等。

从sql表里截取字符串中的日期

Oracle中如何截取字符串的后10位

sql语句截取数据库里的数据