Автоматическое преобразование столбца db mySQL в Translit

На данный момент есть таблица с населёнными пунктами вида
CREATE TABLE IF NOT EXISTS `base_cities` (
  `id_city` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `id_region` int(10) unsigned NOT NULL,
  `id_country` mediumint(8) unsigned NOT NULL,
  `sort` int(11) NOT NULL,
  `city_name_ru` varchar(255) NOT NULL,
  `city_name_en` varchar(255) NOT NULL,
  PRIMARY KEY (`id_city`),
  KEY `id_region` (`id_region`),
  KEY `id_country` (`id_country`),
  KEY `sort` (`sort`),
  KEY `city_name_ru` (`city_name_ru`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=18127 ;

--
-- Dumping data for table `base_cities`
--

INSERT INTO `base_cities` (`id_city`, `id_region`, `id_country`, `sort`, `city_name_ru`, `city_name_en`) VALUES
(1, 1, 1, 1, 'Москва', 'Moscow'),
(2, 1, 1, 0, 'Абрамцево', 'Abramtsevo'),
(3, 1, 1, 0, 'Алабино', 'Alabino'),
(4, 1, 1, 0, 'Апрелевка', 'Aprelevka'),
(5, 1, 1, 0, 'Архангельское', 'Arhangelskoe'),
(6, 1, 1, 0, 'Ашитково', 'Ashitkovo'),
(7, 1, 1, 4, 'Байконур', 'Baikonur'),
(8, 1, 1, 0, 'Бакшеево', 'Baksheevo'),
(9, 1, 1, 0, 'Балашиха', 'Balashiha'),
(10, 1, 1, 0, 'Барыбино', 'Barybino'),
(11, 1, 1, 0, 'Белозёрский', 'Белозёрский'),
(12, 1, 1, 0, 'Белоомут', 'Beloomut'),
(13, 1, 1, 0, 'Белые Столбы', 'Belye Stolby'),
(14, 1, 1, 0, 'Бородино (Московская обл.)', 'Borodino (Moskovskaya obl.)'),
(15, 1, 1, 0, 'Бронницы', 'Bronnitsy'),
(16, 1, 1, 0, 'Быково (Московская обл.)', 'Bykovo (Moskovskaya obl.)'),
(17, 1, 1, 0, 'Валуево', 'Valuevo'),
(18, 1, 1, 0, 'Вербилки', 'Verbilki'),
(19, 1, 1, 0, 'Верея', 'Vereya'),
(20, 1, 1, 0, 'Видное', 'Vidnoe'),


Нужно добавить столбец translit и преобразовать строку city_name_ru в транслит с заменой пробелов знаком _ и убрать все другие знаки, чтобы получилось что-то вроде.

Было:
(16, 1, 1, 0, 'Быково (Московская обл.)', 'Bykovo (Moskovskaya obl.)'),

Стало:
(16, 1, 1, 0, 'Быково (Московская обл.)', 'Bykovo (Moskovskaya obl.)','bykovo_moskovskaya_obl'),


Может быть кто то уже сталкивался с таким и может подсказать как это реализовать..?
Желательно ещё сделать что бы если такой город уже есть, то к ниму делать префикс вроде _1, _2 и так далее.

1 комментарий

avatar
Может быть даже по другому это проще будет сделать..?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.