Mysql 如何在字符串列中仅获取N个字符的第一个实例?

Mysql 如何在字符串列中仅获取N个字符的第一个实例?,mysql,sql,Mysql,Sql,我有一个字符串值为“x,x,x,x,x,x,x…”的列。 我们希望检查所有行,并且只有N个项目(所有其他项目都应删除) 分隔符是,' X可以有不同的长度 我该怎么做呢?您可能需要使用五次:P这可能是一项黑客工作,但没有其他方法: 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,x,x,x,x…”的列。

我们希望检查所有行,并且只有N个项目(所有其他项目都应删除)

分隔符是
,'

X可以有不同的长度

我该怎么做呢?

您可能需要使用五次<代码>:P这可能是一项黑客工作,但没有其他方法:

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,..')))))
这可能有用吗


或者您可以使用以下选项:


您可以通过MySQL函数实现这一点:

要获取此部分,假设您需要前10项:

SET @N := 10;
SELECT SUBSTRING_INDEX(your_column, ',', @N) FROM your_table;
要更新表,请执行以下操作:

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

查看或显示不同长度的项目。

尝试使用子字符串函数。如何使用?我不知道第n个“,”在哪里。欢迎来到数据库101,章节规范化和关系。请阅读,不要将使用逗号分隔的数据存储为单个列。数据库不是美化的记事本。最好使用规范化。请用一个例子详细说明……哦,是的,有一种方法可以使用子字符串_INDEX@paqogomez我的演示不是最好的,因为它没有显示可变长度的要求。你的是,这也是。
UPDATE your_table SET 
    your_column = SUBSTRING_INDEX(your_column, ',', @N);