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

Lập chỉ mục cột với hàm REPLACE trong mySQL

Không có cái gọi là cột được tính trong MySQL.

Nếu bạn muốn định dạng một số giá trị để tăng tốc độ tìm kiếm chỉ mục, bạn có thể sẽ phải sử dụng một số trình kích hoạt. Trên thực tế, tôi đã trả lời gần như cùng một câu hỏi sáng nay:xem https://stackoverflow.com / a / 18047511/2363712 cho một ví dụ tương tự.

Trong trường hợp của bạn, điều đó sẽ dẫn đến một cái gì đó như thế:

CREATE TABLE `table_a`(`column_1` VARCHAR(255), ... ,
                       `column_1_fmt` VARCHAR(255),
                       INDEX(`column_1_fmt`));

CREATE TRIGGER ins_table_a BEFORE INSERT ON `table_a`
FOR EACH ROW
    SET NEW.`column_1_fmt` = REPLACE(NEW.column_1, '-', '');

CREATE TRIGGER upd_table_a BEFORE UPDATE ON `table_a`
FOR EACH ROW
    SET NEW.`column_1_fmt` = REPLACE(NEW.column_1, '-', '');

Bây giờ bạn sẽ sử dụng column_1_fmt để tìm kiếm các giá trị / nối trên các giá trị có định dạng bắt buộc.

Liên quan đến của bạn nhu cầu đặc biệt (loại bỏ dấu gạch ngang - từ một số loại số sê-ri / tham chiếu?). Có lẽ bạn nên đảo ngược vấn đề. Lưu trữ các giá trị đó dưới dạng chuẩn (không có dấu gạch ngang). Và thêm dấu gạch ngang bắt buộc tại SELECT thời gian.




  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ôi có thể tính số ngày trung bình trong MySQL?

  2. Làm thế nào để gọi thủ tục lưu trữ MySQL từ Rails?

  3. truy vấn unbuffered với MySQLi?

  4. Chỉ mục FULLTEXT kết hợp trong MySQL

  5. PDO FetchObject thành thuộc tính Đối tượng; OOP bằng PHP