2016-11-08 3 views
-1

Мы столкнулись с странным краевым случаем, когда мы пытаемся сохранить json blob в таблице в нашей базе данных, и что blob должен содержать символ \. Таким образом, пользователь должен был войти в \test, он должен вернуться именно так, но вместо этого он возвращается как вкладка, за которой следует «est»Обработка записей таблицы базы данных с помощью обратных косых черт?

Насколько я могу судить, происходит то, что когда пользователь вводит и отправляет "\test", его оценивают в «\ \ test» (удалите пробел, не можете положить здесь две обратные косые черты и правильно ли отобразить его?) клиентом, а затем ввести в таблицу. Я могу проверить, что в SQL, вызываемом против таблицы, есть две обратные косые черты. Когда я смотрю на него в таблице после этого шага, он возвращается к "\test". Когда клиент загружает его снова, он получает оценку на вкладке, за которой следует «est».

У нас создается впечатление, что вторая обратная косая черта необходима, чтобы первая обратная косая черта была экранирована и не оценивалась, но, возможно, это то, что вызывает проблемы? Я вроде бы предполагаю, что когда запрос запускает одну из обратных косых черт, все равно сбегает, но я не совсем уверен, что с этим делать. Есть ли что-то с нашей базой данных, которая обрабатывает обратную косую черту, которую нужно искать? Есть ли способ справиться с этим, что мы не рассматривали?

Это база данных Postgres, если это полезно. Я бы сказал, что я начинаю до промежуточного уровня по этому поводу, я просматриваю документацию, но если кто-нибудь может даже указать мне в правильном направлении, это будет очень полезно.

Postgres версия, насколько я могу сказать через Amazon Аус 9,3

EDIT Я думаю, что ив отслеживается этим вопросом вниз к линии в нашем PHP бэкэнде, что я не очень понимаю. Я смотрю на документацию для этого сейчас и отмечу это как ответ, так как я проверил, что это не проблема с SQL.

+1

Обратная косая черта как - по умолчанию - не имеет специального значения в SQL. Это может быть вызвано тем, что какой-либо код обрабатывает эти значения (и отправляет их в базу данных). См. Здесь онлайн-пример: http://rextester.com/QLLYG57275 –

+0

Было бы интересно узнать точный оператор SQL и версию PostgreSQL. –

+0

Я неправильно интерпретирую эту документацию после публикации? https://www.postgresql.org/docs/9.0/static/sql-syntax-lexical.html Как видно из 4.1.2.2, C-подобные экраны принимаются с использованием символа \ – TSI25

ответ

0

Blockquote Обратная обратная косая черта - по умолчанию - не имеет специального значения в SQL. Это может быть вызвано тем, что какой-либо код обрабатывает эти значения (и отправляет их в базу данных). Смотрите здесь для онлайн примера: rextester.com/QLLYG57275 - a_horse_with_no_name

Я принимающее это как ответ, как я проверил, что вопрос с кодом из бэкэнд построения SQL, а не то, как SQL обрабатывается в конце базы данных.