Il n'existe pas de colonne calculée dans MySQL.
Si vous souhaitez formater une valeur pour accélérer la recherche d'index, vous devrez probablement utiliser un déclencheur. En fait, j'ai répondu à peu près à la même question ce matin :voir https://stackoverflow.com /a/18047511/2363712 pour un exemple similaire.
Dans votre cas, cela conduirait à quelque chose comme ça :
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, '-', '');
Vous allez maintenant utiliser column_1_fmt
pour rechercher des valeurs/joindre des valeurs ayant le format requis.
Concernant votre besoin spécial (suppression des tirets -- d'une sorte de numéro de série/de référence ?). Peut-être devriez-vous inverser le problème. Stockez ces valeurs sous forme canonique (pas de tiret). Et ajoutez les tirets requis à SELECT
temps.