sql >> Databáze >  >> RDS >> Mysql

Indexační sloupec s funkcí REPLACE v mySQL

Neexistuje nic takového jako počítaný sloupec v MySQL.

Pokud chcete naformátovat nějakou hodnotu pro urychlení indexového vyhledávání, budete pravděpodobně muset použít nějaký trigger. Ve skutečnosti jsem dnes ráno odpověděl téměř na stejnou otázku:viz https://stackoverflow.com /a/18047511/2363712 pro podobný příklad.

Ve vašem případě by to vedlo k něčemu takovému:

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

Nyní budete používat column_1_fmt k vyhledání hodnot/připojení k hodnotám v požadovaném formátu.

Pokud jde o vaše zvláštní potřeba (odstranění pomlček -- z nějakého druhu sériového/referenčního čísla?). Možná bys měl problém zvrátit. Uložte tyto hodnoty jako kanonickou formu (bez pomlčky). A přidejte požadované pomlčky na SELECT čas.




  1. Seskupit podle prvního písmene, abecedně, nejlepší způsob?

  2. Jak vložit obrázek do mysql databáze (tabulky)?

  3. Detekce spammerů pomocí MySQL

  4. MySQL:Vložení do více tabulek ve stejném dotazu pomocí BEGIN&COMMIT