Nie ma czegoś takiego jak kolumna obliczona w MySQL.
Jeśli chcesz sformatować jakąś wartość, aby przyspieszyć wyszukiwanie indeksu, prawdopodobnie będziesz musiał użyć wyzwalacza. Prawdę mówiąc, dziś rano odpowiedziałem na prawie to samo pytanie:patrz https://stackoverflow.com /a/18047511/2363712 dla podobnego przykładu.
W twoim przypadku doprowadziłoby to do czegoś takiego:
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, '-', '');
Teraz będziesz używać column_1_fmt
do wyszukiwania wartości/łączenia wartości o wymaganym formacie.
Jeśli chodzi o swoje specjalna potrzeba (usuwając kreski -- z jakiegoś numeru seryjnego/referencyjnego?). Może powinieneś odwrócić problem. Zapisz te wartości w formie kanonicznej (bez myślnika). I dodaj wymagane myślniki w SELECT
czas.