我使用此查询:
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,
)
答案 0 :(得分:0)
正如评论中指出的那样,如果使用正则表达式替换,则更容易清楚表达以86
开头的数字。该模式仅为^86
,替换为3706
。请考虑以下查询:
UPDATE managers
SET phone_number = REGEXP_REPLACE(phone_number::text, '^86', '3706')::int