sql 替换 两特定字符(含特定字符)之间的字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 替换 两特定字符(含特定字符)之间的字段相关的知识,希望对你有一定的参考价值。
如记录(字符型) abc?efg?hig
acb?mnz?xyz 只有两个?,且两?间字符串不一样,长度也不同
想要将两?号之间的字符串 替换为+
即结果为 abc+hig
acb+xyz
求sql server 语句
还有你什么数据库啊,不同的数据库用到的函数也不是完全一样的。当然如果都是三位的那就简单了,如果不都是3位的,那在用下面的方法
比如定位中oracle用instr,sqlserver中用charindex
(1)定位,定位?的位置,不知道你的?是不是字符型的,我假设它是字符型的
oracle:instr('?',字段,1,1)(第一次出现问号的位置),instr('?',字段,-1,1)(最后一次出现问号的位置),如果只有两个问号也可以写成instr('?',字段,1,2)
sqlserver:charindex('?',字段,1)(第一次出现问号),len(字段)-(charindex('?',reverse(字段))-1)(最后一次出现问号),如果只有两个问号,可以写成charindex('?',字段,charindex('?',字段,1)+1)
(2)截取需要替换的字符串substring函数,这个二者基本差不多
(3)替换,二者也是大同小异(函数基本相同,但写法上有些区别),我就写一个。
oracle: select replace(字段,subter(字段,instr('?',字段,1,1),instr('?',字段,-1,1)),'+') from table
至于sqlserver的那就自己完成吧,oracle我的把握大一些,sqlserver需要试验才行,我这里可没有相关环境。
注:我忘了问号需不需要转译了,这个你自己试试看吧。 参考技术A 可以这样做:
declare @str varchar(50)
set @str='abc?efg?hig'
select REPLACE(@str,'?efg?','+') 参考技术B
你好!
如果格式固定为只有2个?的话,mysql下面,可以这样:
希望对你有帮助!
追问你好,sql server执行时
消息 195,级别 15,状态 10,第 6 行
'locate' 不是可以识别的 内置函数名称。
MYSQL中怎么替换某个字段值的空白值替换为特定值
UPDATE Content SET [分类]=replace([分类],'','24')用这个命令不行。替换不成功
参考技术A replace一般用于替换字段值中的一段字符串整体替换直接使用where语句定位到空白字段再重新赋值即可:
UPDATE Content SET 分类='24' where 分类=''本回答被提问者采纳
以上是关于sql 替换 两特定字符(含特定字符)之间的字段的主要内容,如果未能解决你的问题,请参考以下文章