我正在使用PostgreSQL数据库。我有一个包含如下行的列:
我要用'00000'替换'PC'文本,然后删除句点和之后的所有文本。 因此,例如,第5行在转换后应该看起来像0000055000。
我能够通过叠加功能使用'PC'。所以我当前的查询如下所示:
select set_name, overlay(set_name placing '00000' from 1 for 2 ) FROM
src.sap_setnode
WHERE set_name LIKE'PC%'
从那里我怎样才能删除句号及其后的所有内容?
由于
答案 0 :(得分:1)
我实际上找到了答案 - 如果有人有类似的问题。 split_part函数可用于通过使用'来分割字段。'作为分界符,然后抓住第一部分。
选择 split_part(叠加(set_name放置' 00000'从1换2),'。',1)FROM src.sap_setnode
答案 1 :(得分:0)
SELECT SPLIT_PART(REPLACE(set_name ,SUBSTR(set_name ,1,2),'00000'),'.',1) FROM t WHERE set_name LIKE 'PC%' OR set_name NOT LIKE 'PC-%' OR set_name NOT LIKE 'PCA%'
答案 2 :(得分:0)
尝试使用正则表达式,例如:
UPDATE TABLE SET set_name = regexp_replace(set_name, '^PC(.+)\..+$', '00000\1');
我不完全确定这会涵盖您可能遇到的所有角落情况,因此您可能需要稍微调整一下正则表达式:)
regex_replace
的文档:
http://www.postgresql.org/docs/9.1/static/functions-string.html
答案 3 :(得分:0)
使用regexp_replace:
select regexp_replace (regexp_replace(set_name,'^PC','00000') , '\.(.*)', '');