Подтвердить что ты не робот

Может ли MySQL заменить несколько символов?

Я пытаюсь заменить кучу символов в поле MySQL. Я знаю функцию REPLACE, но это заменяет только одну строку за раз. Я не вижу никаких соответствующих функций в руководстве.

Можно ли сразу заменить или удалить несколько строк? Например, мне нужно заменить пробелы тире и удалить другую пунктуацию.

4b9b3361

Ответ 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.