我正在尝试使用正则表达式从列中获取名字和姓氏,但我很难过。
我正在尝试:
select
substring('SMIRTH JR, DAVID ALLEN', '^[^ ,]+') as namemodified
它应该返回
SMIRTH, DAVID
但它只返回姓氏。我无法弄清楚如何获得两者。
我还需要它来工作:
SMIRTHJR, DAVID ALLEN
因为数据不是很干净。有什么想法吗?
答案 0 :(得分:1)
使用regexp_matches
函数代替substring
(假设 Postgresql 9.x):
select
regexp_matches(regexp_replace('SMIRTHJR, DAVID ALLEN','(JR|SR),', ','),
'([^\s,]+).*?(, [^\s,]+) [^\s,]+$') as namemodified
对于输入字符串SMIRTH, DAVID
或SMIRTHJR, DAVID ALLEN
SMIRTH JR, DAVID ALLEN