在mySQL中对列的每一行进行子串

时间:2013-08-28 22:14:15

标签: mysql

我有一个名为menu_name的列的表,其中包含类似“one | two | three | four | something”的字符串

我想编写一个一次性脚本,删除包括最后一个|

之后的所有内容

所以最终的价值是“一|二|三|四”

如果没有|在单元格中,即“某事”,然后我想将字符串设置为“”

谢谢!

感谢Nanhe Kumar让我走近,这是最后的命令:

UPDATE reports SET menu_name = SUBSTRING(menu_name,1,POSITION(substring_index(menu_name,'|',-1) IN menu_name)-2)

2 个答案:

答案 0 :(得分:2)

您可以使用SUBSTRING_INDEX功能执行此操作。

select substring_index(menu_name, '|', 4) from my_table;

要返回一个空字符串,以防你的分隔符不存在,你可以做一个稍微复杂的SELECT:

select if (menu_name like '%|%|%|%|%', substring_index(menu_name, '|', 4), '') 
from my_table;

这是一个演示:http://sqlfiddle.com/#!2/30e98/2

的SQL小提示

答案 1 :(得分:1)

SELECT SUBSTRING(menu_name,1,POSITION(substring_index(menu_name,'|',-1) IN menu_name)-2) AS menu FROM table_name;