如何更换第一个" 9"在postgresql数据库列中的另一个字符的字符串?

时间:2016-04-27 15:13:03

标签: postgresql

我有一个专栏" pnum"在"测试"表。 我想取代领先的" 9"在pnum中用" *"对于每一条记录。

testdb=# select * from test limit 5;
 id      name       pnum
===========================================
 1       jk         912312345
 2       tt         9912333333

我希望pnums看起来像这样:

 id      name       pnum
===========================================
 1       jk         *12312345
 2       tt         *912333333

我如何在postgres中做这样的事情?

编辑1:

到目前为止,我尝试过这样的事情:

select id, name, '*' && substring(pnum FROM 2 FOR CHAR_LENGTH(pnum)-1 )  from test limit 3;

还试过这个:

select id, name, '*' || substring(pnum FROM 2 FOR CHAR_LENGTH(pnum)-1 )  from test limit 3;

两个人都没有工作......

编辑2:

我明白了:

select id, name, '*'::text || substring(pnum FROM 2 FOR CHAR_LENGTH(pnum)-1 )  from test limit 3;

2 个答案:

答案 0 :(得分:1)

参见函数regexp_replace(字符串文本,模式文本,替换文本[,标记文本])String Functions and Operators

SELECT regexp_replace('9912333333', '^[9]', '*');
 regexp_replace 
----------------
 *912333333 

答案 1 :(得分:0)

您可以使用Postgres' string manipulation功能。在您的情况下"子串"和#34; Char_Length"

'*' || Substring(<yourfield> FROM 2 FOR CHAR_LENGTH(<yourfield>)-1) as outputfield