SQL替换字段最后一个字符和几个字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL替换字段最后一个字符和几个字符相关的知识,希望对你有一定的参考价值。

UPDATE S_Video SET S_VData=RIGHT(S_VData,LEN(S_VData)-1) WHERE S_VData LIKE '%#'

服务器: 消息 8116,级别 16,状态 1,行 1
函数 right 的参数 1 的数据类型 ntext 无效。

请问这句话该如何写才正确。
我是要替换最后几个字符,不是替换那个字段中只要有的字符,那个字符可能在中间也有,但是我只要替换最后的,也就是最右边的字符,中间的无需替换。

参考技术A S_VData 这个字段是ntext 类型的
不能用right,left取
改成用substring 应该可以

----------
如果S_VData 不会超过4000的话
可以这样
UPDATE S_Video SET S_VData=RIGHT(convert(Nvarchar(4000),S_VData),LEN(convert(Nvarchar(4000),S_VData))-1) WHERE S_VData LIKE '%#'本回答被提问者采纳
参考技术B UPDATE S_Video SET S_VData =前面的+replace(substr(S_VData,-5,5)“需要替换的”,“替换的内容”) WHERE ...

select substr('123456789',-5,5) str from dual;--oracle表示取后5个字符
参考技术C UPDATE S_Video SET S_VData replace(S_VData,“需要替换的”,“替换的内容”) WHERE S_VData 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替换字段最后一个字符和几个字符的主要内容,如果未能解决你的问题,请参考以下文章

mySQL字段内容替换成指定随机的几个内容?

sql 删除表中的字段的最后一个字符

sql 删除表中的字段的最后一个字符

sql中如何批量替换字段里的字符串?

01_正则表达式_05_小结和几个案例

sql怎么替换字符串中的某个字符