MySQL REGEX - 从String中提取数据

时间:2018-05-10 15:41:12

标签: mysql regex mysqli

我被卡住了...我在MySQL中有一个字段(描述),字符串非常长。嵌入在该字符串中的是一个参考号,我需要使用视图提取到另一个字段。字符串看起来像这样。

  

LOREM IPSUM DOLOR SIT AMET CONSECTETUR ADIPISCING ELIT INTEGER NEC ODIO XX00000000X LIBERO SED CURSUS ANTE DAPIBUS DIAM SED NISI NULLA QUIS SEM at NIBH ELEMENTUM IMPERDIET

我需要的字符串是XX00000000X。它始终以两个字母开头,数字在中间,末尾有一个字母。

我有以下查询:

SELECT 
    Description, 
    SUBSTRING_INDEX (Description, ' ',  (Description REGEXP '[[:upper:]]{1,2}[[:digit:]]+[[:upper:]]$') * -1 ) AS Reference 
FROM db_test.tbl_regex;

问题是它只在“描述”字段的末尾收集参考数据。

1 个答案:

答案 0 :(得分:2)

REGEXP_SUBSTR()是在MariaDB 10.0.5和MySQL 8.0中引入的。

这就是您需要找到并提取XX00000000X。

REGEXP(正如您使用的那样)只返回true / false。 SUBSTRING_INDEX()需要字符串。

如果您无法升级到其中一个,那么您可以使用REGEXP来识别具有XX00000000X的行,然后使用您的应用代码将其解压缩。