Няма такова нещо като изчислена колона в MySQL.
Ако искате да форматирате някаква стойност, за да ускорите търсенето в индекс, вероятно ще трябва да използвате някакъв тригер. Всъщност тази сутрин отговорих на почти същия въпрос:вижте https://stackoverflow.com /a/18047511/2363712 за подобен пример.
Във вашия случай това би довело до нещо подобно:
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, '-', '');
Сега ще използвате column_1_fmt
за търсене на стойности/съединяване на стойности с необходимия формат.
Относно вашата специална нужда (премахване на тирета -- от някакъв сериен/референтен номер?). Може би трябва да обърнете проблема. Съхранявайте тези стойности като канонична форма (без тире). И добавете задължителните тирета в SELECT
време.