MYSQLi поиск и замена с указанным именем шрифта - PullRequest
0 голосов
/ 25 августа 2018

При создании своего веб-сайта я изначально использовал шрифт Verdana совсем немного.Теперь я хочу просмотреть базу данных mysql и изменить все экземпляры:

font-family: Verdana;

на

font-family: 'Open Sans', sans-serif;

НО, когда я впервые попробовал функцию поиска и замены на панели phpMyAdmin, система перебрала цитируемое «Open Sans».У меня был похожий ответ, когда я вводил команду mysql в окне «Выполнить запрос / запрос SQL».

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

Любые подсказки о том, какой должна быть команда mysql в такой ситуации ..

Заранее спасибо

1 Ответ

0 голосов
/ 25 августа 2018

Сначала запишите его как оператор SELECT. Мы можем использовать функцию MySQL REPLACE. https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace

, например

SELECT t.mycol AS oldval
     , REPLACE(t.mycol,'font-family: Verdana;','font-family: ''Open Sans'', sans-serif;') AS newval 
--                                             ^             ^^         ^^             ^
  FROM mytable t 
 WHERE t.mycol LIKE '%font-family: Verdana;%'

Обратите внимание, что одинарные кавычки в строковом литерале могут указываться двумя одинарными кавычками.

В качестве демонстрации рассмотрим:

 SELECT 'It''s good' AS foo 
 --     ^  ^^      ^

Получив проверенное и проверенное выражение для newval, мы можем использовать это выражение в UPDATE выражении

UPDATE mytable t
   SET t.mycol = REPLACE(t.mycol,'font-family: Verdana;','font-family: ''Open Sans'', sans-serif;') 
 WHERE t.mycol LIKE '%font-family: Verdana;%'

Обратите внимание, что это заменит только первое вхождение строки в mycol. Последующее выполнение найдет следующее вхождение строки поиска и заменит ее.

Также обратите внимание, что REPLACE выполняет регистрозависимое сопоставление.

...