Computer >> Máy Tính >  >> Lập trình >> MySQL

Có thể cập nhật MySQL với regexp không?

Bạn không thể cập nhật bằng regexp, tức là bạn cần sử dụng toán tử LIKE thay vì regexp. MySQL không cung cấp hỗ trợ cập nhật với regexp. Toán tử LIKE như sau:

 UPDATE yourTableName SET yourColumnName =REPLACE (yourColumnName, yourValue) ',' ') WHERE yourColumnNameLIKE'% yourValueThatWillReplace)% '; 

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng.

 mysql> tạo bảng Replace_Demo -> (-> Id int NOT NULL AUTO_INCREMENT, -> Giá trị varchar (20), -> PRIMARY KEY (Id) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,62 giây)  

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau:

 mysql> chèn vào giá trị Replace_Demo (Value) ('221)'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,22 giây) mysql> chèn vào giá trị Replace_Demo (Value) ('321'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,24 giây) mysql> chèn vào giá trị Replace_Demo (Giá trị) ('354)'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,18 giây) mysql> chèn vào giá trị Replace_Demo (Giá trị) ('223)'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,09 giây) mysql> chèn vào giá trị Replace_Demo (Giá trị) ('446'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,13 giây) 

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau:

 mysql> chọn * từ Replace_Demo; 

Sau đây là kết quả:

 + ---- + ------- + | Id | Giá trị | + ---- + ------- + | 1 | 221) || 2 | 321 || 3 | 354) || 4 | 223) || 5 | 446 | + ---- + ------- + 5 hàng trong bộ (0,00 giây) 

Đây là truy vấn để cập nhật với toán tử LIKE thay cho regexp:

 mysql> update Replace_Demo set Value =REPLACE (Value, '221)', '') -> WHERE Giá trị như '% 221)%'; Truy vấn OK, 1 hàng bị ảnh hưởng (0,21 giây) Các hàng khớp:1 Đã thay đổi:1 Cảnh báo:0 

Bây giờ hãy kiểm tra các bản ghi bảng một lần nữa bằng cách sử dụng câu lệnh select. Truy vấn như sau:

 mysql> chọn * từ Replace_Demo; 

Sau đây là kết quả:

 + ---- + ------- + | Id | Giá trị | + ---- + ------- + | 1 | || 2 | 321 || 3 | 354) || 4 | 223) || 5 | 446 | + ---- + ------- + 5 hàng trong bộ (0,00 giây)