簡體   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