Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kolom pengindeksan dengan fungsi REPLACE di mySQL

Tidak ada yang namanya kolom yang dihitung di MySQL.

Jika Anda ingin memformat beberapa nilai untuk mempercepat pencarian indeks, Anda mungkin harus menggunakan beberapa pemicu. Faktanya, saya menjawab pertanyaan yang hampir sama pagi ini:lihat https://stackoverflow.com /a/18047511/2363712 untuk contoh serupa.

Dalam kasus Anda, itu akan mengarah pada sesuatu seperti itu:

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, '-', '');

Sekarang Anda akan menggunakan column_1_fmt untuk mencari nilai/bergabung pada nilai yang memiliki format yang diperlukan.

Tentang Anda kebutuhan khusus (menghapus tanda hubung -- dari semacam nomor seri/referensi?). Mungkin Anda harus membalikkan masalahnya. Simpan nilai tersebut sebagai bentuk kanonik (tanpa tanda hubung). Dan tambahkan tanda hubung yang diperlukan di SELECT waktu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengekspresikan hubungan memiliki banyak melalui Entity Framework 5?

  2. Urutkan tabel, menggunakan loop di MySQL dengan SELECT dan UPDATE

  3. Menyiapkan Pemicu MySQL

  4. Tambahkan kolom di laravel

  5. Multiple One to Many Relation di GORM