繁体   English   中英

MySQL-多个点之间的SUBSTRING_INDEX

[英]MySQL - SUBSTRING_INDEX between multiple points

我知道这远非最佳的处理方式,但是它很少需要执行,因此我不想修改数据库/应用程序。

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

“ 1,0,13424556,项目,东西”

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

“ 1,0,13424556,项目,其他\\ r \\ n” 1,,1,12345888,项目其他,其他

我需要找到一种方法(在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;

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

如果有人可以对此进行扩展,我将非常感激。

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

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;

这将返回第二个项目。 3替换2以得到第三个,用4替换第四个,依此类推。

您可能需要稍微调整一下...。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM