我有一个mysql数据库,其中的字段可以包含由“,”(逗号)
分隔的更多值当我提取它们时,我需要单独使用它们。
例如,在db的字段中,值为:1,2,3。 我需要他们这样:1然后2然后3
有人可以帮助我吗?
答案 0 :(得分:0)
MySql不提供任何字符串拆分功能(我知道)。通常,最好将这种类型的数据存储在单独的列中。
但是如果你没有能力以不同方式存储它,你可以使用substring_index函数来实现一些结果。
SELECT `value` ,
SUBSTRING_INDEX( `value` , ',', 1 ) AS a,
SUBSTRING_INDEX(SUBSTRING_INDEX( `value` , ',', 2 ),',',-1) AS b,
SUBSTRING_INDEX(SUBSTRING_INDEX( `value` , ',', -2 ),',',1) AS c,
SUBSTRING_INDEX( `value` , ',', -1 ) AS d
FROM (SELECT "1,2,3,4" AS `value`) AS t;
这会将以下结果作为一行: '1,2,3,4','1','2','3','4'
查看此处的评论: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html
至于将它分成不同的行,我不确定你会怎么做..如果可以规范化你的db结构可能是最好的。
答案 1 :(得分:0)
使用此处的定义函数: http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/ 如果您知道您的数据最多有3个值,例如1,2,3,您可以尝试使用此sqlFiddle example
SELECT value
FROM
(
SELECT SPLIT_STR(value,',',1) AS value FROM t
UNION ALL
SELECT SPLIT_STR(value,',',2) AS value FROM t
UNION ALL
SELECT SPLIT_STR(value,',',3) AS value FROM t
)T1
WHERE value <> '';
如果您知道您的数据最多包含5个值,例如1,2,3,4,5,您可以再添加2个UNION ALL
...