Обновление замена точки с запятой в SQL приводит к синтаксической ошибке

#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, ' ;', ';')