怎么用sql语句实现部分内容替换

网站后台用的是mysql数据库,表article里有个字段body,字段属性是htmltext现在我想把body字段每条记录里包含的第一个“上海”替换为“广州”(由于一条... 网站后台用的是mysql数据库,表article里有个字段body,字段属性是htmltext

现在我想把body字段每条记录里包含的第一个“上海”替换为“广州”(由于一条记录里可能含有很多个"上海",这里只需要替换第一个)

请问用sql怎么去实现
展开
 我来答
真灵级存在
2011-05-03 · TA获得超过853个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:172万
展开全部
update article set body=INSERT(body, INSTR(body,'上海'), 4, '广州') where INSTR(body,'上海')<>0;
INSTR(body,'上海')---找到body里出现的第一个上海的位置;
INSERT(body, INSTR(body,'上海'), 4, '广州') 将body从第一个上海的位置开始的4个字符(上海两个字占4个字符)替换为广州。
每件是INSTR(body,'上海')不等0,因为body中没有上海的话,INSTR(body,'上海')会返回0,INSERT(body, INSTR(body,'上海'), 4, '广州')就会将body左边开始的4个字符删掉换为广州,这显然不是我们想要的结果。
更多追问追答
追问
刚试了一下,可以运行,检查了一下,好像就是我想要的结果啊,为什么你会说这不是我们想要的结果呢

我需要的就是body左边开始出现的第一个上海替换为广州
追答
我意思是必须加上条件:where INSTR(body,'上海')0,因为body中没有上海的话,INSTR(body,'上海')会返回0,INSERT(body, INSTR(body,'上海'), 4, '广州')就会将body左边开始的4个字符删掉换为广州。
就是如果body中没有'上海'的话,会出现我们不想要的结果。
你还不好分辨到底是没有上海或是上海本来就在最左边,都会将body左边开始的4个字符删掉换为广州。
hit_lubin
2011-05-03 · TA获得超过7889个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:2018万
展开全部
用字符串定位的语法。
类似于SQLSERVER中CHARINDEX这样的语法,MYSQL中肯定也有吧,应该是locate。这个返回的就是第一个符合条件的字符串所在的位置
如果是SQLSERVER的语法可以这么写
UPDATE TABLE SET COLUMN = CONCAT(SUBSTRING(COLUMN, 1, locate('上海',COLUMN) - 1), '广州', SUBSTRING(COLUMN, locate('上海',COLUMN) + 2, len(COLUMN) - locate('上海',COLUMN) - 1) ) where locate('上海',COLUMN) > 0
没测试,但是大约是这个意思,我这里没有MYSQL的环境。
更多追问追答
追问
刚试了一下,运行不了呢
追答
您好,提示了什么错误?
MYSQL的语法我这里没有环境,所以是试着写的,你看看是不是这个语句的语法有什么错误?
思路就是这个思路,您应该可以理解吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tomtanggeng
2011-05-03 · 超过32用户采纳过TA的回答
知道答主
回答量:196
采纳率:0%
帮助的人:107万
展开全部
UPDATE article
SET body = '广州'
where body = '上海'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
catherine_eric
2011-05-03
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
建议买一本书来看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式