2014-09-01 2 views
2

Я использую следующий запрос в MySQL:Заменить «А» с «и» в MySQL с помощью замены Query

update TABLENAME set columnname = replace(columnname, 'And', 'and'); 

целью было заменить И и («А» должно быть в нижнем регистре). Проблема в том, что он не может найти «И» в базе данных, но если я использую «% и%», то он может найти его вместе со многими другими и, которые являются частью слова или даже теми, которые уже имеют строчные буквы.

+1

Определить 'не можете найти "И" в базе данных'. Что происходит вместо этого? Ничего? Неверный результат? Компьютер взрывается? – EJP

+1

Почему бы просто не использовать LOWER() –

ответ

1

Поскольку вы хотите заменить только целые слова «И», все они будут иметь передние и конечные пробелы (если у кого-то есть некоторая плохая пунктуация, такая как «и»). Поэтому включите эти пробелы в поиск - то есть

update TABLENAME set columnname = replace(columnname, ' And ', ' and '); 

SQL Fiddle, показывающий ваш результат. http://sqlfiddle.com/#!3/3f8fa/1

+0

Где он говорит что-нибудь о целых словах? – EJP

+0

@EJP здесь - «вместе со многими другими ансами, которые являются частью слова» –

+0

Точно. Часть слова. Это имена столбцов. – EJP

0

заменить функция есть случай чувствительный. Таким образом,

update TABLENAME set columnname = replace(columnname, 'And', 'and'); 

может не обновлять строку, если в ней нет имени столбца «И».

LIKE, вместо этого, является случай нечувствительны, таким образом

SELECT columnname FROM tablename WHERE columnname LIKE '%And%'; 

может возвращать результаты, имеющие 'И', 'и', 'И', ... в ColumnName.

+0

Функция replace() выполняет поиск «подстроки» - поэтому не используйте подстановочный знак. Если OP выполнял поиск, используйте LIKE '% And%', но не с функцией replace(). –

+0

Ему не нужно менять «и» на «и», и единственное изменение, которое на самом деле означает, означает, что «А» - «а». – EJP

+0

@EJP OP говорит, что * replace * func, похоже, не находит/не заменяет «And's», он также говорит, что 'LIKE '% AND%'' возвращает строки. Ответ пытается дать объяснение: в принципе не может быть «И», только «и»; но поскольку LIKE нечувствителен к регистру, отображаются некоторые строки. –

Смежные вопросы