sql server 将字符串第二字符替换为另外一个字符的 方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 将字符串第二字符替换为另外一个字符的 方法相关的知识,希望对你有一定的参考价值。

update emp_info_master set chn_name=replace(chn_name,'静','可')
where chn_name like '_静%'
这个方式是有效的,但是有一个问题就是
如果我的emp_info_master表中里有个人名字叫做“李静静”的情况下第三个静字也会被替换掉,请问如何才能只替换第二个“静”字

update emp_info_master set chn_name=replace(chn_name,'静','可')where chn_name like '%静%' and chn_name not like '%静静%'

查询条件为:名称中有静字,但不能是静静,这样就满足你的要求了。追问

我的意思是 替换所有第二个字为静的
就是说 如果是叫做李静静 那么 替换后变成 李可静 而不是不替换 有两个静的数据

追答

update emp_info_master set chn_name=replace(chn_name,'静','可')where chn_name not like '%静静%'
update emp_info_master set chn_name=replace(chn_name,'静静','可静')where chn_name like '%静静%'

两段SQL可以实现。

来自:求助得到的回答
参考技术A update emp_info_master set chn_name=stuff(chn_name,2,1,'可')
where chn_name='李静静'
希望能够帮到你;
参考技术B update emp_info_master set chn_name=stuff(chn_name,2,1,'可')
where chn_name like '_静_'本回答被提问者采纳

mssql,让某字段里的 某字符替换成另一字符

说明,本人已经用了下面语句出错:
update news set content=Replace(content,'电脑','计算机')

用了下面的语句不出错了,但内容大于4000个字符的文章被截了。
update news set content=Replace(cast(content as varcher(8000)),'电脑','计算机')

有什么办法,谢谢!QQ:25988850
回复军统的话:
不能加大,最大只能是8000了,那个varcher是打错了。

update news set content=Replace(cast(content as varcher(8000)),\'电脑\',\'计算机\')

那你就把8000给加大
先select max(len(content)) from news 看看最大的是多大,然后再改8000那个参数
再一个content as varcher 这地方你写错了吧,是varchar吧?
参考技术A 确实如此,Replace不支持Text类型。
如果用程序来做的话,会简单些,不过速度也会慢一些。
参考技术B 突然想到,你在数据库里设计时该列数据类型设计成什么的?

以上是关于sql server 将字符串第二字符替换为另外一个字符的 方法的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何将一列表中的字符替换成另外一个字符

如何将sql server 数据库表中的某一列的某一字符替换成需要的字符

SQL如何将一列表中的字符替换成另外一个字符

sql server 查询字符串指定字符出现的次数

SQL SERVER 字符串截取

求sql部分字符替换语句