MySQL - 多点之间的SUBSTRING_INDEX

时间:2013-11-06 14:47:23

标签: mysql

我知道这远不是最佳的做事方式,但这种做法很少需要做,所以我不想看看修改数据库/应用程序。

我有一个数据库字段DataField(BLOB),其中包含以下格式的数据字符串:

  

“1,0,13424556,项目,什么”

但是该字段可能包含多个实例(有时为4或5个实例),例如

  

“1,0,13424556,项,东西\ r \ n” 个1,...,1,12345888,itemOther,somethingElse“

我需要找到一种方法(在MySQL中)将其拆分为单独显示每个项目(在它自己的列中)。但是找不到这样做的方法。 (事实上​​,如果可能的话,我只需要每个数字字符串(例如

13424556

))

我有以下查询,这是一个开始:

SELECT
SUBSTRING_INDEX(`DataField`,'\r\n',1),
SUBSTR(`DataField`, LOCATE('\r\n',`DataField`)+2, (CHAR_LENGTH(`DataField`) -     LOCATE('\r\n',REVERSE(`DataField`) )- LOCATE('\r\n',`DataField`))) AS e2
FROM table3;

如果只有两个项目,则此方法有效,但如果有3个或更多项目,则无效。

如果有人可以扩展这一点,我将非常感激。

1 个答案:

答案 0 :(得分:1)

这可能会让你朝着正确的方向前进:

select 
substring_index(
  substring_index(case when `DataField` like "%\r\n" then `DataField` else concat(`DataField`,"\r\n") end,
  "\r\n",2),
"\r\n",-1)
from table3;

这将返回第二项。将2替换为3以获取第三个,4以获得第四个等等。

你可能需要调整一下......