3

我有一个表,其中包含一个名为 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)
4

2 回答 2

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;

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

于 2013-08-28T22:18:15.863 回答
1
SELECT SUBSTRING(menu_name,1,POSITION(substring_index(menu_name,'|',-1) IN menu_name)-2) AS menu FROM table_name;
于 2013-08-28T22:51:43.953 回答