Решение MYSQL:
Предположим, у нас есть таблица test1, в которой первичный ключ имеет тип varchar, см. Ниже структуру таблицы.
CREATE TABLE `test1` (
`id` varchar(20) NOT NULL COMMENT 'Primary Key',
`name` varchar(255) DEFAULT NULL COMMENT 'Name',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Вставка записей примера:
INSERT INTO `test1` (`id`, `name`) VALUES ('abcd1234', 'abcd');
INSERT INTO `test1` (`id`, `name`) VALUES ('mnop5678', 'mnop');
Теперь выполняем запрос на обновление, где мы рассматриваем формат поля идентификатора: сначала 4 символа - буква, 5 - - (дефис) и затем после цифр.
UPDATE `test1` SET `id` = CONCAT(SUBSTRING(`id`, 1, 4), '-', SUBSTRING(`id`, 5)) WHERE 1;
Исключили здесь условие where, поскольку необходимо выполнить операцию обновления для полной таблицы.