Postgres更改数字格式

时间:2017-09-06 06:15:57

标签: postgresql

Postgres中的

我使用此查询:

UPDATE managers SET phone_number = replace(phone_number, '\m86', '3706');

遗憾的是,该字段很长,查询失败。我需要将所有以86开头的数字更改为3706 ...

我尝试了许多Postgres功能,但是他们有我需要的功能并不明显。

错误是:

ERROR:  function replace(bigint, unknown, unknown) does not exist
LINE 1: UPDATE managers SET phone_number = replace(phone_number, '\m...
                                       ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

表格定义:

CREATE TABLE public.managers(
  phone_number bigint,
  email_report boolean,
)

1 个答案:

答案 0 :(得分:0)

正如评论中指出的那样,如果使用正则表达式替换,则更容易清楚表达以86开头的数字。该模式仅为^86,替换为3706。请考虑以下查询:

UPDATE managers
SET phone_number = REGEXP_REPLACE(phone_number::text, '^86', '3706')::int