Aldadis
@Aldadis

Как разделить «слипшиеся» слова в таблице?

Есть таблица prefix_users
В таблице есть столбец name
В этом столбце идут имена юзеров вида:
Коробков Олег Иванович
Горбачевская Юлия Васильевна
Inessa Oliynichenko
Stasenido
Семенова ИринаВикторовна
Иванова ОльгаВикторовна


Каким образом можно разделить слипшиеся имена? Достаточно будет если смогу их разделить отталкиваясь от регистра. Т.е. чтобы
Семенова ИринаВикторовна
превратилась
Семенова Ирина Викторовна
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Сначала проверить корректность исправлений:
SELECT `name`, REGEXP_REPLACE(`name`, '([a-zа-яё])([A-ZА-ЯЁ])', '\\1 \\2', 1, 0, 'c') FROM `prefix_users` WHERE REGEXP_LIKE(`name`, '([a-zа-яё])([A-ZА-ЯЁ])', 'c')


Если проверка покажет желаемый результат - тооооо....
UPDATE `prefix_users` SET `name`=REGEXP_REPLACE(`name`, '([a-zа-яё])([A-ZА-ЯЁ])', '\\1 \\2', 1, 0, 'c') WHERE REGEXP_LIKE(`name`, '([a-zа-яё])([A-ZА-ЯЁ])', 'c')


Если разделить нужно только русские ФИО - то убрать все a-z и A-Z.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Если только разделить по регистру:
<?php
function split_name($name) {
	return mb_ereg_replace_callback(
		'([а-яa-z])([А-ЯA-Z])',
		function($m) {
			return $m[1] . ' ' . $m[2];
		}, 
		$name
	);
}

echo split_name('Семенова ИринаВикторовна') . PHP_EOL;
echo split_name('Иванова ОльгаВикторовна') . PHP_EOL;
echo split_name('InessaIvanovna Oliynichenko') . PHP_EOL;


share PHP code
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы