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

Cách thay thế một phần của chuỗi trong MySQL

Vấn đề:

Bạn muốn thay thế một phần của chuỗi bằng một chuỗi khác trong MySQL.

Ví dụ:

Cơ sở dữ liệu của chúng tôi có một bảng có tên motorbike_sale với dữ liệu trong id , namepart_number cột.

id tên part_number
1 Harley Davidson x 1245-AC2-25
2 Honda CB750-x 012-GK8-A8
3 Suzuki Hayabusa X 798-25-28

Chúng tôi muốn thay đổi số bộ phận của xe máy bằng cách thay thế tất cả các ký tự gạch nối bằng dấu gạch chéo về phía trước.

Giải pháp 1:

SELECT name,
  REPLACE( part_number, '-', '/' ) as new_part_number
FROM motorbike_sale;

Truy vấn này trả về danh sách tên xe máy và số bộ phận mới. Lưu ý các dấu gạch chéo về phía trước đã thay thế các dấu gạch ngang trong các số bộ phận:

name new_ part_number
Harley Davidson x 1245 / AC2 / 25
Honda CB750-x 012 / GK8 / A8
Suzuki Hayabusa X 798/25/28

Thảo luận:

Sử dụng hàm REPLACE () của MySQL để thay thế một chuỗi con (tức là các từ, một ký tự, v.v.) bằng một chuỗi con khác và trả về chuỗi đã thay đổi. Hàm này có ba đối số:

  • Chuỗi thay đổi. (Trong ví dụ của chúng tôi, đó là cột part_number .)
  • Chuỗi con cần thay thế (tức là ký tự ‘-’).
  • Chuỗi con cần chèn (tức là ký tự ‘/’).

Lưu ý rằng chức năng này thay thế cho tất cả lần xuất hiện của chuỗi con trong chuỗi hoặc cột đã cho. Trong ví dụ của chúng tôi, mỗi part_number chứa ba ký tự gạch nối, mỗi ký tự được thay thế bằng dấu gạch chéo.

Trong ví dụ tiếp theo, chúng tôi sẽ thay thế tất cả các trường hợp của 'x' trong tên xe máy bằng '10'.

Giải pháp 2:

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;

Truy vấn này sử dụng mệnh đề WHERE để lọc bản ghi cho các hàng có id giá trị từ 2 trở lên.

Lưu ý rằng tên của xe máy Honda đã được đổi từ 'x' thành '10', nhưng tên của xe máy Suzuki không được thay đổi. Tại sao không? Vì REPLACE () phân biệt chữ hoa chữ thường. Do đó, ‘x’ không giống với ‘X’. Trong ví dụ này,‘ x ’đã được thay thế bằng‘ 10 ’, nhưng‘ X ’không thay đổi.

Truy vấn này hiển thị tên mới của xe máy Honda và tên cũ của xe máy Suzuki.

id new_name part_number
Honda CB750-10 012-GK8-A8
Suzuki Hayabusa X 798-25-28

  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 thế nào để sử dụng MySQLDB SScursor một cách hiệu quả?

  2. Lưu trữ JSON trong cơ sở dữ liệu so với việc có một cột mới cho mỗi khóa

  3. PHP &MySQL:mysqli_num_rows () mong muốn tham số 1 là mysqli_result, boolean đã cho

  4. PostgreSQL và MySQL, một so sánh

  5. MySQL Xóa các bản ghi trùng lặp