代码之家  ›  专栏  ›  技术社区  ›  Jérôme Verstrynge

Mysql正则表达式在字符串中的出现和提取

  •  1
  • Jérôme Verstrynge  · 技术社区  · 9 年前

    我有一张桌子 MY_TBL MY_FLD 。我需要找到其中的行 我的FLD 包含一个数字,后跟一个连字符和一个数字(通常是一个范围)。

    fffff 1-5 fdsfdsfds
    1-5 fdsfdsfds 
    aaaa 10-23
    1-50 fdsfdsfds
    

    这些不应:

    -5 dsgdgf
    10- rere
    -15
    10 -23
    10- 23
    

    \d+\-\d+ .

    如何在MySql语句中使用它?是否可以将模式提取到单独的字符串中?

    fffff 1-5 fdsfdsfds  ->  1-5
    1-5 fdsfdsfds  ->  1-5
    aaaa 10-23  ->  10-23
    1-50 fdsfdsfds  ->  1-50
    
    1 回复  |  直到 9 年前
        1
  •  3
  •   Wiktor Stribiżew    9 年前

    您可以使用它来检索匹配的行:

    SELECT * FROM MY_TBL WHERE MY_FLD REGEXP '[0-9]+-[0-9]+'
    

    无需逃避 - [0-9] 括号表达式。

    然而,在MySQL中没有简单的内置方法来提取正则表达式匹配项。