从字符串中删除某些字符

时间:2018-10-17 06:58:30

标签: mysql regex string

我想从演员列中删除中间姓氏。演员列将一组演员在一起。演员的名字就像firstName [-middleName-lastName]。字符列可以没有任何actor组合。其他演员的名称用+分隔。 假设数据是这样的:

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

预期输出如下:

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

1 个答案:

答案 0 :(得分:2)

早于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