如何在String列中只获取N个第一个char实例?

时间:2014-09-22 14:13:36

标签: mysql sql

我有一个字符串值为"x,x,x,x,x,x,x,x..."的列。

我们希望遍历所有行并且只有N个项目(其他所有项目都应删除)。

分隔符为','

X可以有不同的长度。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用MySQL函数SUBSTRING_INDEX执行此操作:

要获得此部分,假设您需要前10个项目:

SET @N := 10;
SELECT SUBSTRING_INDEX(your_column, ',', @N) FROM your_table;

要更新你的表格:

UPDATE your_table SET 
    your_column = SUBSTRING_INDEX(your_column, ',', @N);

请参阅显示不同长度项目的this demothis one

答案 1 :(得分:0)

您可能需要使用LOCATE五次! :P这可能是一个hackjob,但没有别的办法:

LOCATE('bar', 'foobarbar', 5)

所以你的代码将是这样的:

LOCATE(',', 'x,x,x,x,x,x,x,x,..', LOCATE(',', 'x,x,x,x,x,x,x,x,..', LOCATE(',', 'x,x,x,x,x,x,x,x,..', LOCATE(',', 'x,x,x,x,x,x,x,x,..', LOCATE(',', 'x,x,x,x,x,x,x,x,..')))))

这可能有用吗?


或者你可以使用:SUBSTRING_INDEX()

SUBSTRING_INDEX('x,x,x,x,x,x,x,x,..', ',', 5)