我想从 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;
Demo
关于mysql - 从字符串中删除某些字符组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848976/