修改mysql某字段:(截取/之后的值追加host)

例如:param字段:截取最后一个/,修改字符串,得到表中最终结果:host/aib,host/b我研究的有问题:update test_param set param= concat('host',(SELECT param FROM (SELECT SUBSTRING_INDEX(t.param ,'/',-1) FROM test_param t )as a)) 这样总报错

第1个回答  2019-04-10
update test_param set param=concat('host/',SUBSTRING_INDEX(param ,'/',-1));追问

    但是这个好像有bug,如果本来没有/的话,这行数据就被追加上了host/

追答

那没有/的话,又何来“最后一个/”?
你先把问题描述清楚,究竟param这个字段中有没有/ ?
其实如果数据里有些有/有些没有,只希望处理含有/的,那么可以加个判断啊:
update test_param set param=concat('host/',SUBSTRING_INDEX(param ,'/',-1)) where param like "%/%";

本回答被提问者采纳
第2个回答  2019-04-10

你的写法有问题。试试这个:

update test_param t set t.param= concat('host',SUBSTRING_INDEX(t.param ,'/',-1));

追问

但是这个好像有bug,如果本来没有/的话,这行数据就被追加上了host/了

本回答被网友采纳