SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.05.2014 17:53:09

sito-corito
Завсегдатай
Зарегистрирован: 13.07.2008
Сообщений: 53

Регистронезависимый replace()

Здравствуйте.
Есть такой запрос:

UPDATE wp_posts SET post_content = replace(post_content, 'http://domain.ru', 'http://newdomain.ru')

Этот запрос делает замену текста в полях с именем 'post_content` таблицы 'wp_posts'. Но делает он это регистрозависимо. Т.е. если например в поле будет такой текст "Мой домен HTTP://Domain.ru", то замена произведена не будет. Есть ли какой-то способ сделать регистронезависимую замену текста?

Неактивен

 

#2 22.05.2014 18:39:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Регистронезависимый replace()

Можно сначала найти подстроку
SELECT LOCATE('http://domain.ru', LOWER(post_content)) FROM wp_posts;

а затем заменить, зная позицию

Неактивен

 

#3 22.05.2014 20:11:50

sito-corito
Завсегдатай
Зарегистрирован: 13.07.2008
Сообщений: 53

Re: Регистронезависимый replace()

rgbeast написал:

Можно сначала найти подстроку
SELECT LOCATE('http://domain.ru', LOWER(post_content)) FROM wp_posts;

а затем заменить, зная позицию

Спасибо за ответ. А нет какого-нибудь более простого решения? К примеру, при создании базы данных указывать сравнение. Я обычно указываю utf8_general_ci, но как я понял это не помогает. Что то подобное может помочь? А может регулярные выражения какие можно использовать?

Отредактированно sito-corito (22.05.2014 20:12:50)

Неактивен

 

#4 22.05.2014 23:42:07

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Регистронезависимый replace()

В MySQL не замены регеэкспом. Вы можете подключить внешнюю функцию, которая это делает через механизм UDF: https://github.com/hholzgra/mysql-udf-regexp

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson