sql中replace语句如何做模糊匹配并删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中replace语句如何做模糊匹配并删除相关的知识,希望对你有一定的参考价值。
要求如下:
一个表A中有一个字段INFO, 里面内容不一,但都有一个共同特征。如
info your <CHECK1>****这里面内容都不一样**<CHECK123>
yes info <CHECK1>****这里面内容都不一样**<CHECK123>
yes info yes2 info <CHECK1>****这里面内容都不一样**<CHECK123>
我想把INFO字段里面每行中<CHECK1>****这里面内容都不一样**<CHECK1>部分都删除。怎么匹配并删除?
结果要如下:
info your
yes info
yes info yes2 info
set @a='info your <CHECK1>****这里面内容都不一样**<CHECK123>111'
select LEFT(@a,CHARINDEX('<',@a,1)-1)+right(@a,CHARINDEX('>',reverse(@a))-1)追问
多谢。请看下我的补充问题,你第二行怎么全部内容都进去了?
追答那直接LEFT就好了,我以为你<CHECK123>后面还会有呢
set @a='info your <CHECK1>****这里面内容都不一样**<CHECK123>111'
select LEFT(@a,CHARINDEX('<',@a,1)-1)追问
不明白你第二行什么意思。我实际要怎么写。因为每行都不一样
set @a='info your ****这里面内容都不一样**111'
把@a换成你要截取的列就行了
select LEFT(info,CHARINDEX('<',info,1)-1) from 表A追问明白。我大概看明白你写的。可是:
因为每行都不一样,有些行可能会这样
info*********这里也都不一样*** your ****这里面内容都不一样**111
和111只是我找出来的标志,也都是一串字符。
解释一下:这个SQL的意思就是取info中‘<’第一次出现位置左侧的字符串+info中‘>’最后一次出现位置右侧的字符串
select LEFT(info,CHARINDEX('<',info,1)-1)+right(info,CHARINDEX('>',reverse(info))-1) from 表A本回答被提问者采纳以上是关于sql中replace语句如何做模糊匹配并删除的主要内容,如果未能解决你的问题,请参考以下文章
java中PreparedStatement执行带参数的sql语句如何实现模糊查询?
SQL的模糊匹配区别---like,rlike,regexpx