2015-09-25 3 views
1

Я знаю, что я могу найти информацию, что мне нужно череззаменить SQL с тем, где условие

SELECT * from x6fnckq9h_posts 
where post_status = 'publish' and post_content like '%new.%' 

Кроме того, я знаю, что я могу заменить текст в поле с

update TABLE_NAME 
set FIELD_NAME = 
     replace(FIELD_NAME, 'find this string', 'replace found string with this string'); 

Что мне нужно является: заменить каждый '%new.%' с ''

Итак, правильно отправить

update x6fnckq9h_posts 
    set post_content = replace(post_content, 'new.', '') 
WHERE post_status = 'publish' and post_content like '%new.%'; 
+1

вы действительно не нуждаетесь в 'и POST_CONTENT как«% новый.%» 'Часть – JamieD77

+1

Оператор LIKE часть не так уж плохо на всех, так как он сохраняет размер транзакции вниз. (напишите набор и т. д.) Держите его! – jarlh

+1

Я не понимаю, почему это не сработает. –

ответ

1

Если вы нервничаете, включите обновление в отборный и глазном яблоке выхода, чтобы увидеть, если он выглядит нормально:

select 
    post_content old_post_content, 
    replace(post_content, 'new.', '') new_post_content 
from x6fnckq9h_posts 
where post_status = 'publish' 
and post_content like '%new.%' 

Если Вам нравятся предлагаемые изменения, и до тех пор, пока вы используете тот же самое where, выполнение вашего обновления будет в порядке.

+0

выглядит странно для меня. вы можете объяснить мне, почему вы называете [required_table] [strangename], replace ..., [anotherstrangename]? Я просто не получаю это%/ –

+0

@ ЛысенкоАлексей, что синтаксис - это столбец * псевдоним * - он переименовывает столбец возвращаемого набора строк. Я назвал их так, чтобы они четко различали два столбца друг от друга. – Bohemian

+0

получил, спасибо;) –

0

Вместо запуска обновления просто выберите оба поля.

SELECT post_content, replace(post_content, 'new.', '') 
FROM x6fnckq9h_posts 
WHERE post_status = 'publish' 
    AND post_content like '%new.%'; 
Смежные вопросы