Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL正则表达式-从字符串中提取数据_Mysql_Regex - Fatal编程技术网

MySQL正则表达式-从字符串中提取数据

MySQL正则表达式-从字符串中提取数据,mysql,regex,Mysql,Regex,我被卡住了。。。我在MySQL中有一个字段(描述),带有一个很长的字符串。该字符串中嵌入了一个引用号,我需要使用视图将其提取到另一个字段。这根绳子看起来像这样 LOREM IPSUM Door SIT AMET Concertive Elite INTEGER NEC ODIO XX00000000 x LIBERO SED CURSUS ANTE DAPIBUS直径在NIBH ELEMENTUM IMPERDIET 我需要从这个字符串中得到XX00000000X。它总是以两个字母开头,中间有数

我被卡住了。。。我在MySQL中有一个字段(描述),带有一个很长的字符串。该字符串中嵌入了一个引用号,我需要使用视图将其提取到另一个字段。这根绳子看起来像这样

LOREM IPSUM Door SIT AMET Concertive Elite INTEGER NEC ODIO XX00000000 x LIBERO SED CURSUS ANTE DAPIBUS直径在NIBH ELEMENTUM IMPERDIET

我需要从这个字符串中得到XX00000000X。它总是以两个字母开头,中间有数字,结尾有一个字母。 我有以下疑问:

SELECT 
    Description, 
    SUBSTRING_INDEX (Description, ' ',  (Description REGEXP '[[:upper:]]{1,2}[[:digit:]]+[[:upper:]]$') * -1 ) AS Reference 
FROM db_test.tbl_regex;
问题是它只在引用数据位于描述字段末尾时收集引用数据。

REGEXP\u SUBSTR()
是在MariaDB 10.0.5和MySQL 8.0中引入的

这就是查找和提取XX00000000X所需的内容

REGEXP
(使用时)仅返回true/false
SUBSTRING\u INDEX()
需要该字符串

如果您无法升级到其中一个,那么最好使用
REGEXP
来识别包含XX00000000X的行,然后使用应用程序代码来提取它。

REGEXP\u SUBSTR()
是在MariaDB 10.0.5和MySQL 8.0中引入的

这就是查找和提取XX00000000X所需的内容

REGEXP
(使用时)仅返回true/false
SUBSTRING\u INDEX()
需要该字符串


如果您无法升级到其中一个,那么最好使用
REGEXP
来识别包含XX00000000X的行,然后使用应用程序代码来提取它。

MySQL没有内置的regex替换/提取功能。您能更具体地说明您要匹配的字符串吗?例如,它的前面或后面是否总是有一个或多个字符串作为标记?我不明白您为什么在
子字符串\u INDEX
中使用它。
REGEX
操作符只返回一个真/假结果,说明字符串是否匹配,而不是任何类型的索引。你可以找到哪些行有这样的数据,但如果你使用的是mysql,你需要在你的应用层中提取参考号。同意@Bohemian,但它只是在最后找到这些数据的原因是你的REGEX中的$。在MySQL中,您可以找到与模式匹配的行,但必须在应用程序层提取匹配值。MySQL没有内置的正则表达式替换/提取功能。您能更具体地说明您要匹配的字符串吗?例如,它的前面或后面是否总是有一个或多个字符串作为标记?我不明白您为什么在
子字符串\u INDEX
中使用它。
REGEX
操作符只返回一个真/假结果,说明字符串是否匹配,而不是任何类型的索引。你可以找到哪些行有这样的数据,但如果你使用的是mysql,你需要在你的应用层中提取参考号。同意@Bohemian,但它只是在最后找到这些数据的原因是你的REGEX中的$。在MySQL中,您可以找到与模式匹配的行,但您必须在应用程序层提取匹配值。这是一个很大的帮助。从我在文档中看到的情况来看,v8.0刚刚在4月份发布。版本历史记录从5.7跳到8.0,因此我将期待我的主机在不久的将来进行更新。是的,8.0.11很热门。相关例程中已经有一个bug-
REGEXP_REPLACE
;看,这是一个很大的帮助。从我在文档中看到的情况来看,v8.0刚刚在4月份发布。版本历史记录从5.7跳到8.0,因此我将期待我的主机在不久的将来进行更新。是的,8.0.11很热门。相关例程中已经有一个bug-
REGEXP_REPLACE
;看见