添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 对于 MySQL 8+, 用 REGEXP_REPLACE() 函数
  • 对于 MySQL 5 及以前版本,用用户自定义函数 (user-defined function,简称UDF),如: mysql-udf-regexp
  • 本文只说明 MySQL 8+ 中 REGEXP_REPLACE() 函数的用法,不对 UDF 进行说明,请自行参考 GitHub 链接。

    REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]])
  • expr 是字符串,或者表的字段
  • pat 是正则表达式,MySQL 中的正则表达式并不是完整的的,比如数字可以用 [0-9] ,但是 \d 就不可以。
  • repl 是要替换成的字符串。如果要引用提取的字符串,可以用 $1 $2 $3
  • pos 正则表达式开始搜索的位置,默认是 1 ,也就是起始位置。
  • occurrence 匹配次数。默认是 0 ,匹配全部。
  • match_type 匹配类型。
  • c :大小写敏感
  • i :大小写不敏感
  • m :点号 . 匹配多行。默认是到行尾部结束了。
  • u :仅 Unix-like 换行符。
  • 替换字符串:

    -- 以下输出为:the quick brown dog
    SELECT REGEXP_REPLACE('the quick brown fox', '(.*?)(fox)' , '$1dog'  ) AS demo;

    替换字段:

    -- 假设原本字段内容为:100 test of regex,以下输出为:100 test
    update post set title =  REGEXP_REPLACE(title, '([0-9]+) test of regex', '$1 test') where id = 1;

    参考资料:

  • 12.8.2 Regular Expressions
  • How to do a regular expression replace in MySQL?
  •