我想从演员列中删除中间姓氏。演员列将一组演员在一起。演员的名字就像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
答案 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;