MySQL中的RegEx?

San*_*ing 1 regex mysql

当我做

SELECT resrev_meta FROM resourcerevs WHERE resrev_meta LIKE '%attr%';
Run Code Online (Sandbox Code Playgroud)

我得到这样的结果

<attr><fileid>131</fileid></attr> 
<attr><fileid>326</fileid><width>360</width><height>640</height></attr> 
Run Code Online (Sandbox Code Playgroud)

是否有可能只能在<fileid>和之间输出数字的RegEx </fileid>

ZnA*_*ArK 5

正则表达式可能不是你想要的.mysql支持xpath表达式.

这应该给你你需要的东西:

SELECT ExtractValue(resrev_meta,'//fileid')  AS fileid 
     FROM resourcerevs 
     WHERE resrev_meta LIKE '%attr%';
Run Code Online (Sandbox Code Playgroud)

http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html#function_extractvalue

mysql> SELECT
    ->   ExtractValue('<a>ccc<b>ddd</b></a>', '/a') AS val1,
    ->   ExtractValue('<a>ccc<b>ddd</b></a>', '/a/b') AS val2,
    ->   ExtractValue('<a>ccc<b>ddd</b></a>', '//b') AS val3,
    ->   ExtractValue('<a>ccc<b>ddd</b></a>', '/b') AS val4,
    ->   ExtractValue('<a>ccc<b>ddd</b><b>eee</b></a>', '//b') AS val5;

+------+------+------+------+---------+
| val1 | val2 | val3 | val4 | val5    |
+------+------+------+------+---------+
| ccc  | ddd  | ddd  |      | ddd eee |
+------+------+------+------+---------+
Run Code Online (Sandbox Code Playgroud)