Der er ikke noget der hedder beregnet kolonne i MySQL.
Hvis du vil formatere en eller anden værdi for at fremskynde indekssøgning, bliver du sandsynligvis nødt til at bruge en eller anden trigger. Faktisk besvarede jeg næsten det samme spørgsmål her til morgen:se https://stackoverflow.com /a/18047511/2363712 for et lignende eksempel.
I dit tilfælde ville det føre til sådan noget:
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, '-', '');
Nu skal du bruge column_1_fmt
at søge efter værdier/join på værdier med det påkrævede format.
Angående din særlige behov (fjernelse af bindestreger -- fra en slags serie-/referencenummer?). Måske skulle du vende problemet. Gem disse værdier som en kanonisk form (ingen bindestreg). Og tilføj nødvendige bindestreger ved SELECT
tid.