我有一个字段,其中包含我想要提取到另一列的ID号的混合数据。我想要提取的列有一些匹配格式'lastname,firstname-ID'的记录。我只想删除“ID”部分,以及那些后面带有“ - ”和数字的列。
所以我试图做的是......
update data.xml_customerqueryrs
set new_id = regexp_replace(name, '[a-z]A-Z]', '')
where name like '%-%';
我知道我需要修复一些小问题,但我不确定,因为模式匹配的postgresql文档并没有真正做好覆盖仅搜索数字的工作。
答案 0 :(得分:3)
如果您确实only want to strip the 'ID' part
:
new_id = regexp_replace(name, '-.*?$', '')
或者,如果您实际上想要提取 ID部分:
new_id = substring(name, '-(.*?)$')
我使用*?
quantifier,因此只提取最后一部分,其中名称中包含-
。像:
Skeet-Gravell,John-1234
当前手册中的答案 1 :(得分:1)