永发信息网

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

答案:6  悬赏:0  手机版
解决时间 2021-02-25 19:40
  • 提问者网友:我们很暧昧
  • 2021-02-25 00:43
由于服务器ip地址更改,使该服务器的论坛(sql server数据库)中上传的图片不能正确显示,图片显示还在指向原来ip的地址,现在想知道如何能将数据库中的ip地址进行替换??例如:数据库名bbs,表名:forum,列名:content
该列的内容:

想将10.63.13.200替换为10.63.14.200
我应该怎么办??
由于论坛上上传的大多数都是图片,数据库比较大,我本想用导出excel文件替换然后再导入,但是导出后出现excel文件错误,无法导出。所以只能希望用sql指令进行修改了,希望等到帮助,谢谢了:)

用:
replace(content, '10.63.13.200', '10.63.14.200')

出现 [microsoft][odbc sql server driver][sql server]第一行:‘content’附件有语法错误

用:
use bbs

select replace(content,'10.63.13.200','10.63.14.200') from forum

出现 [microsoft][odbc sql server driver][sql server]函数 replace的参数1的数据类型text无效
最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-02-25 01:40
用replace
设定 字段名 volumnName
需要修改的字符 A 替换成 BCD

update 表名 set volumnName=replace(volumnName,'A','BCD')
全部回答
  • 1楼网友:一叶十三刺
  • 2021-02-25 06:23
这个问题我也碰到过,不过我当初是为了处理搜索时在sql裏自动把新闻搜索的关键字替换成红色的代码,也就是加个在关键字上,给果发现text类型不能替换,所以后来就先把其强制转换成varchar再替换的,不过如果内容太多为丢失一部分的. (REPLACE(CONVERT(Varchar(80),content),@keyword,(''+@keyword+'')) + '...') AS content 同理你也可以这样做 select replace(CONVERT(Varchar(80),content),'10.63.13.200','10.63.14.200') as content from forum
  • 2楼网友:迷人又混蛋
  • 2021-02-25 05:26
由于content字段是text类型的,replace函数不支持第一个参数是text类型,所以直接那么用是会出错的。你可以尝试用如下语句 select replace(cast(content as varchar(8000)),'10.63.13.200','10.63.14.200') from forum 同样,更新语句就是 update forum set content=replace(cast(content as varchar(8000)),'10.63.13.200','10.63.14.200') 如果content字段的总长度没有超过8000字节,语句是没有问题的,如果超过8000字节,更新就比较麻烦了,楼主先看看上述语句是否可以正常执行吧。
  • 3楼网友:不想翻身的咸鱼
  • 2021-02-25 04:25
update forum set content=replace(convert(varchar(1000),content),'10.63.13.200','10.63.14.200')
  • 4楼网友:長槍戰八方
  • 2021-02-25 02:48
数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用decimal。 所有的默认值都丢失了。主要是数字类型和日期类型。 所有now(),time(),date()要改成getdate()。 所有datediff('d', time1, time2)要改成datediff(day, time1, time2) 有可能一些true/false类型不能使用,要变为1/0。 备注类型要通过cast(column as varchar)来使用。 CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整。 isnull(rowname)要改成rowname = null ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号! 转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功。 对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10". 日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。 在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。
  • 5楼网友:神也偏爱
  • 2021-02-25 02:08
update forum set content=replace(content,'10.63.13.200','10.63.14.200')
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯