PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Xóa / thay thế các ký tự đặc biệt trong giá trị cột?

Bạn có thể sử dụng regexp_replace chỉ để lại các chữ số và chữ cái, như thế này:

update mytable
   set myfield = regexp_replace(myfield, '[^\w]+','');

Điều đó có nghĩa là mọi thứ không phải là chữ số hoặc chữ cái hoặc gạch dưới sẽ không được thay thế bằng gì (bao gồm -, space, dot, comma , v.v.).

Nếu bạn muốn bao gồm cả _ được thay thế (\w sẽ để lại nó) bạn có thể thay đổi regex thành [^\w]+|_ .

Hoặc nếu bạn muốn chặt chẽ với các ký tự phải xóa, bạn sử dụng:[- ]+ trong trường hợp này, đây là dấu gạch ngang và dấu cách.

Cũng theo đề xuất của Luiz Signorelly bạn có thể sử dụng để thay thế tất cả các lần xuất hiện:

    update mytable
       set myfield = regexp_replace(myfield, '[^\w]+','','g');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tạo ID ngẫu nhiên, duy nhất, gồm chữ và số có độ dài N trong Postgres 9.6+?

  2. Làm thế nào để ghi lại sự thay đổi dữ liệu trong postgresql?

  3. Dừng thời gian dịch Django sang UTC

  4. Phát hiện các hàng có kết hợp số giống nhau trong hai cột đầu tiên và chọn hàng có số cao nhất trong cột thứ ba

  5. Không thể xác định kiểu đa hình vì đầu vào có kiểu không xác định