Я шукаю певну рядок у полі і хочу замінити її новою. Зокрема, я хочу, щоб усі посилання на одну URL-адресу були змінені на іншу. Я створив цей оператор SQL і запускаю його під час mysql>
запиту на CentOS 5.5 за допомогою MySQL Community Server 5.1.54.
update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%');
Відповідь така:
Query OK, 0 rows affected (0.02 sec)
Rows matched: 618 Changed: 0 Warnings: 0
Як я можу відстежити, чому не вносяться зміни?
EDIT 1:
Завдяки Аарону Бертрану я виявив, що REPLACE()
не може поводитись із символами, і я користувався цілком неправильно (подумайте: пропущений WHERE
пункт). Ось моя реформована заява:
UPDATE [table]
SET [column] =
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
WHERE
[column]
LIKE
'%companydomain.com%';
До якого я отримую старе, знайоме:
Query OK, 0 rows affected (0.02 sec)
Rows matched: 167 Changed: 0 Warnings: 0
Що я можу зробити неправильно?
EDIT 2:
Я скажу вам, що я робив неправильно !! Я не ставив під сумнів припущення. Моє припущення полягало в тому, що рядок, який я замінював, був у всьому нижньому регістрі. Пункт WHERE повертав усі речі, які виглядалиLIKE %companydomain.com%
. Це включає всі перестановки з великої літери, такі як CompanyDomain.com, CoMpAnYdOmAiN.com тощо.
Він передав те, на REPLACE()
що тоді суворо шукав companydomain.com, а потім замінив його на companydomain.org.
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
Тож, звичайно, мої записи поверталися, але нічого не замінювали. Щойно я змінив, REPLACE()
щоб взяти до уваги великі літери, усі записи було оновлено, і, здається, все добре. Правильний REPLACE()
синтаксис для мого сценарію був таким:
REPLACE (
[column],
'CompanyDomain.com',
'companydomain.org' )