Будучи новичком-самоучкой, я создал большую проблему для себя. Перед тем, как вставить данные в мою базу данных, я преобразовал апострофы (') в строке в двойные кавычки ("") вместо обязательной обратной косой черты и апострофа (\'), которые на самом деле требует MySQL.
Я подумал, что до того, как моя таблица вырастет более чем до 200 000 строк, лучше немедленно исправить эту проблему. Итак, я провел небольшое исследование и нашел функцию SQL REPLACE, и это здорово, но теперь я запутался.
В ASP я делал следующее:
str = Replace(str,"'","""")
Если я посмотрю на свою базу данных в SQL Workbench, преобразованный мной символ теперь представляет собой одинарную кавычку ("), что меня немного смутило. Я понимаю, почему он изменился с двойное на одиночное, но я не знаю, какой из них мне теперь менять.
Чтобы решить проблему с помощью SQL REPLACE, нужно ли преобразовать одинарные кавычки (") в обратную косую черту и апострофы (\ ') или двойные кавычки (" ") в обратную косую черту и апострофы ( \ ')?
Например, это:
SQL = " SELECT REPLACE(myColumn,"""","\'") FROM myTable "
или это:
SQL = " SELECT REPLACE(myColumn,""","\'") FROM myTable "
Надеюсь, я хорошо объяснил, любые предложения с благодарностью получены, как всегда. Любые вопросы по моему вопросу, пожалуйста, прокомментируйте.
Большое спасибо
- ОБНОВЛЕНИЕ -
Я пробовал следующие запросы, но все еще не смог изменить (") в данных:
SELECT REPLACE(caption,'\"','\'') FROM photos WHERE photoID = 3371
SELECT REPLACE(caption,'"','\'') FROM photos WHERE photoID = 3371
SELECT REPLACE(caption,'""','\'') FROM photos WHERE photoID = 3371
Однако, если я ищу:
SELECT COUNT(*) FROM photos WHERE caption LIKE '%"%'
, я получаю 16 150 строк.
- ОБНОВЛЕНИЕ 2 -
Итак, я создал «обходной путь». Мне удалось довольно быстро преобразовать весь столбец, написав сценарий ASP, используя этот SQL:
SELECT photoID, caption FROM photos WHERE caption LIKE '%""%';
, а затем в ASP я сделал:
caption = Replace(caption,"""","\'")
Но я все же хотел бы знать, почему я не смог добиться этого с помощью SQL?