查询从字段中删除字符和文本

时间:2014-10-28 19:57:23

标签: sql postgresql replace

我正在使用PostgreSQL数据库。我有一个包含如下行的列:

enter image description here

我要用'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%'

从那里我怎样才能删除句号及其后的所有内容?

由于

4 个答案:

答案 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') , '\.(.*)', '');