Может ли MySQL заменить несколько символов?
Я пытаюсь заменить кучу символов в поле MySQL. Я знаю функцию REPLACE, но это заменяет только одну строку за раз. Я не вижу никаких соответствующих функций в руководстве.
Можно ли сразу заменить или удалить несколько строк? Например, мне нужно заменить пробелы тире и удалить другую пунктуацию.
Ответы
Ответ 1
Вы можете связать функции REPLACE:
select replace(replace('hello world','world','earth'),'hello','hi')
Это напечатает hi earth
.
Вы можете даже использовать подзапросы для замены нескольких строк!
select replace(london_english,'hello','hi') as warwickshire_english
from (
select replace('hello world','world','earth') as london_english
) sub
Или используйте JOIN для их замены:
select group_concat(newword separator ' ')
from (
select 'hello' as oldword
union all
select 'world'
) orig
inner join (
select 'hello' as oldword, 'hi' as newword
union all
select 'world', 'earth'
) trans on orig.oldword = trans.oldword
Я оставлю перевод с использованием общих табличных выражений в качестве упражнения для читателя;)
Ответ 2
Каскадирование - единственное и простое решение для mysql для замены нескольких символов.
UPDATE table1
SET column1 = replace(replace(REPLACE(column1, '\r\n', ''), '<br />',''), '<\r>','')
Ответ 3
REPLACE
делает хорошую простую работу по замене символов или фраз везде, где они появляются в строке. Но при очистке пунктуации вам также может понадобиться искать шаблоны - например, последовательность пробелов или символов в определенных частях текста, например. в середине слова или после полной остановки. Если это произойдет, вы можете найти эту функцию встроенных функций регулярного выражения более мощной.
Ответ 4
Я использовал lib_mysqludf_preg, который позволяет:
Используйте регулярные выражения PCRE непосредственно в MySQL
С установленной библиотекой вы можете сделать что-то вроде этого:
SELECT preg_replace('/(\\.|com|www)/','','www.example.com');
Что даст вам:
example
Ответ 5
Я бы предложил запустить программу, чтобы перебирать ваши записи, обрабатывать поля, а затем обновлять их. Может быть, простой perl или php script.