mysql - 从字符串中删除某些字符组

标签 mysql regex string

我想从 Actor 列中删除中间名、姓氏。 Actor 栏里有一群 Actor 在一起。 Actor 的名字就像firstName[-middleName-lastName]。人物栏可以有任意的 Actor 组合。不同 Actor 的名字用+分隔。 假设数据如下:

actors
wahab+mira_sah
zayra_khan+daniel_day_lewis+danial_craig
tom_cruise+tom_hanks

预期输出如下:

actors
wahab+mira
zayra+daniel+danial
tom+tom

最佳答案

早于 8+ 的 MySQL 版本无法真正处理此类问题,至少不能直接处理(不添加例如 UDF)。正则表达式是解决此问题的一个非常合适的工具。幸运的是,MySQL 8+ 确实支持正则表达式替换:

WITH yourTable AS (
    SELECT 'actors' AS col UNION ALL
    SELECT 'wahab+mira_sah' UNION ALL
    SELECT 'zayra_khan+daniel_day_lewis+danial_craig' UNION ALL
    SELECT 'tom_cruise+tom_hanks'
)

SELECT
    col,
    REGEXP_REPLACE(col, '_[^+]+', '') AS col_out
FROM yourTable;

enter image description here

Demo

关于mysql - 从字符串中删除某些字符组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848976/

相关文章:

regex - 如何从 MATLAB 中的字符串创建首字母缩略词?

c - 为什么代码只打印指向字符串的指针数组中最后一个指针的值?

HTML 样式的 PHP 字符串

php - 使用多个关键字搜索Mysql数据库

php - 将 PHP session 从一个目录传递到另一个在 public_html 中并行创建的目录

MySQL:为什么 GROUP_CONCAT 在我的多连接查询中丢失行?

php - 这两者的区别是……?

python - Python中的负模式匹配正则表达式

regex - 不知道为什么我的正则表达式会抓取一些空白项目

c++ - 使用正则表达式进行输入验证