繁体   English   中英

如何在更新查询中从 Postgres 数据库中的字段中删除所有空格?

[英]How do I remove all spaces from a field in a Postgres database in an update query?

用于在表上运行更新查询以从列中的值中删除所有空格的正确语法是什么?

我的表被称为users并且在列fullname一些值看起来像'Adam Noel' 我想删除空格,以便新值是'AdamNoel'

我有 30k 行

update users
  set fullname = replace(fullname, ' ', '');

要删除所有空格(不仅仅是空格字符),可以使用:

update users set fullname = regexp_replace(fullname, '\s', '', 'g');
commit;

只需使用简单的代码

 REPLACE('some_string', ' ', '')

Replace('some_string', '\s', '')

从字符串中删除任何空格

您可以包含一个条件以仅更新需要替换的值。

UPDATE users SET fullname = REPLACE(fullname, ' ', '') WHERE fullname ~* ' ';

又快又脏

如果是text[]列,则可以执行以下操作:

UPDATE users SET pets = string_to_array(replace(array_to_string(pets, ';'), ' ', ''), ';');

之前: {"Big Dog", "Small Cat"}

之后: {"BigDog", "SmallCat"}

UPDATE customers SET first_name = TRIM (TRAILING FROM first_name ) where id = 1

例如,如果要删除字符串开头的空格,请使用以下语法:

TRIM(LEADING FROM string) TRIM() 函数的以下语法从字符串的末尾删除所有空格。

TRIM(TRAILING FROM string) 要删除字符串开头和结尾的所有空格,请使用以下语法:

修剪(来自字符串)

都可以用trim功能进行更新。

UPDATE users AS u SET name = TRIM(u.name)

(可选)添加一个子句以仅更新需要它的记录,而不是所有记录,但会使用更多 CPU。

UPDATE users AS u SET name = TRIM(u.name) WHERE LENGTH(TRIM(u.name)) <> LENGTH(u.name)

如果表在被修剪的值上有唯一索引,则可能会出现重复键错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM