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

trường hợp mysql trong câu lệnh cập nhật với REPLACE

Vì bạn đang sử dụng LIKE '%abc%' , câu lệnh cập nhật sẽ yêu cầu quét toàn bộ bảng. Trong trường hợp đó, kết hợp hai câu lệnh sẽ cải thiện hiệu suất tổng thể. Tuy nhiên, trong đề xuất của bạn, mọi hàng đều được cập nhật và hầu hết chúng đều được cập nhật mà không bị thay đổi (giá trị column1 được thay thế bằng giá trị column1).

Bạn muốn đảm bảo rằng bạn giữ WHERE để chỉ những hàng thực sự cần thay đổi được thay đổi. Việc ghi vào đĩa không cần thiết này sẽ chậm hơn so với việc kiểm tra xem hàng có khớp với tiêu chí hay không.

Thực hiện điều này:

UPDATE table1
SET column1 = 
CASE
WHEN column1 LIKE '%abc%' THEN REPLACE(column1, 'abc', 'abc1')
WHEN column1 LIKE '%def%' THEN REPLACE(column1, 'def', 'def1')
END
WHERE column1 LIKE '%abc%' OR column1 LIKE '%def%';



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 5.1 - Kết nối MySQL Homestead. `Kết nối bị Từ chối` &` Không có tệp hoặc thư mục nào như vậy`

  2. Xuất Blob từ cơ sở dữ liệu MySQL sang tệp chỉ có SQL

  3. Tạo bảng với tên biến php mysql

  4. Cách hủy bỏ việc thực thi các tập lệnh MySQL (có lẽ gây ra lỗi)?

  5. Cách kiểm tra phiên bản MySQL của bạn