#mysql #sql #replace #sql-update
#mysql #sql #заменить #sql-обновление
Вопрос:
Я импортирую файл SQL в свою базу данных, но что-то не так. Все знаки препинания в конце предложения / фразы имеют дополнительный пробел.
Пример:
This is a sentence .
This , as you can see , is a problem .
Do it !
Должно быть:
This is a sentence.
This, as you can see, is a problem.
Do it!
Для исправления я планирую запускать команды SQL в phpMyAdmin в этом контексте
UPDATE book SET content = REPLACE(content,' .','.');
UPDATE book SET content = REPLACE(content,' ,',',');
UPDATE book SET content = REPLACE(content,' ?','?');
UPDATE book SET content = REPLACE(content,' !','!');
UPDATE book SET content = REPLACE(content,' :',':');
Пока все хорошо. Но когда я попробовал это с точкой с запятой, подобной этой
UPDATE book SET content = REPLACE(content,' ;',';');
Я получаю синтаксическую ошибку # 1064 при имитации запроса.
Я попытался избежать этого с помощью обратной косой черты, подобной этой, но с той же ошибкой
UPDATE book SET content = REPLACE(content,' ;',';');
Есть идеи, как это решить?
Спасибо
Комментарии:
1. На какую версию SQL Server вы ориентируетесь? Это отлично работает в MSSQL v13
2. Сервер: Localhost через сокет UNIX Тип сервера: Percona Server Версия сервера: 5.6.40-84.0-log — Percona Server (GPL), выпуск 84.0, редакция 47234b3 Версия протокола: 10 Пользователь: Кодировка сервера: UTF-8 Unicode (utf8)
3. Общий хост Siteground подтверждает, что они используют версию 5.6. Они сказали, что эта версия лучше, чем 13. Мне нужно подготовиться к выходу с моего хоста
Ответ №1:
Попробуйте
delimiter /
UPDATE book SET content = REPLACE(content,' ;',';');
delimiter ;
Редактировать:
Это было поле в phpMyAdmin, для которого по умолчанию установлена точка с запятой. Установите значение /.
Комментарии:
1. Я на 99% уверен, что это так. Попробуйте другой разделитель, кроме ‘ / ‘, например ‘ //// ‘, После изменения удалите точку с запятой в конце 🙂
UPDATE book SET content = REPLACE(content, ' ;', ';')