[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена окончания в строке MySql
Serg86
В общем есть задача перевести столбец в таблице из именительного в предложный падеж, соответственно сразу столкнулся с проблемой привязки к концу строки.
К примеру слово Ставрополь нужно привести к виду Ставрополе
Было бы логично воспользоваться запросом
UPDATE table_regs SET name_pp = REPLACE(name_pp, 'ль', 'ле ');

И на выходе получить "Ставрополе", но в таком случае строка "Ставропольский край" превратится в "Ставрополеский край"

Отсюда вопрос, как в MySql замену можно привязать к концу строки.
redreem
зачем решать эту задачу заменой прямо в базе? как вариант - хранить корень названия "ставропол", и хранить несколько суффиксов-окончания для разный падежей "ь", "я", "ьский" и т.д. А логику подстановки реализовывать уже вне базы.
Serg86
Цитата
зачем решать эту задачу заменой прямо в базе? как вариант - хранить корень названия "ставропол", и хранить несколько суффиксов-окончания для разный падежей "ь", "я", "ьский" и т.д. А логику подстановки реализовывать уже вне базы.

На данный момент так проще, меньше переделывать
kristall
REGEXP_REPLACE

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
Serg86
Цитата
REGEXP_REPLACE

Чет не получается, можете пример запроса привести
kristall
Что-то типа:
PDATE table_regs SET name_pp = REGEXP_REPLACE(name_pp, 'ль$', 'ле');


Посмотрел, эта функция в нативном MySQL отсутствует, есть только в MariaDB. В MySQL нужно городить пользовательскую функцию. Примеры гуглятся.

А можно просто выгрузить дамп таблицы, отредактировать его, а потом залить обратно.



_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
Игорь_Vasinsky
kristall
почитай на досуге
http://dev.mysql.com/doc/refman/5.7/en/regexp.html

Serg86
чем так то не устраивает?
UPDATE table_regs SET name_pp = REPLACE(name_pp, 'ль', 'ле ') where name_pp like '%ль';


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Serg86
Цитата
UPDATE table_regs SET name_pp = REPLACE(name_pp, 'ль', 'ле ') where name_pp like '%ль';

Чет сразу не сообразил, спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.