2016-11-08 44 views
-1

我们遇到了一个奇怪的边缘情况,我们试图在数据库的表中存储一个json blob,并且该blob需要能够包含\字符。因此,一个用户要输入\test它需要回来的确切,但它取而代之的是作为一个选项卡回来“est”用反斜杠处理数据库表项?

据我所知,最新情况是,当用户进入和提交"\test"它被评估为“\ \测试”(删除空间,不能在这里放两个反斜杠,让它显示正确?)由客户端,然后输入到表中。我可以验证在调用该表的SQL中有两个反斜杠。当我在这个步骤之后看它时,它会回到"\test"。当客户端再次加载时,它会被评估为一个标签,后面跟着一个“est”。

我们觉得第二个反斜杠是必须的,这样第一个反斜杠就会被转义并且不被评估,但是这可能是导致问题的原因吗?我有点假设,当查询运行的反斜杠无论如何逃脱,但我不知道该怎么做。我们的数据库是否有处理反斜杠的东西,我们需要寻找?有没有办法处理这个我们没有考虑过的事情?

这是一个Postgres数据库,如果这是有帮助的。我会说我在这类事情上是初学者,我正在浏览文档,但如果任何人都可以指出我的方向,那将会非常有帮助。

Postgres的版本,据我可以通过亚马逊AWS讲的是9.3

编辑 我认为香港专业教育学院跟踪这个问题到我们的PHP后台一条线,我真的不明白。我现在正在查看文档,并将其标记为已回答,因为我已经验证了它不是SQL的问题。

+1

反斜杠 - 默认情况下 - 在SQL中没有特殊含义。这可能是由任何代码处理这些值(并将它们发送到数据库)造成的。在这里看一个在线的例子:http://rextester.com/QLLYG57275 –

+0

知道确切的SQL语句和PostgreSQL版本是很有趣的。 –

+0

我误解了这篇postgres文档吗? https://www.postgresql.org/docs/9.0/static/sql-syntax-lexical.html 它似乎意味着在4.1.2.2中使用\字符 – TSI25

回答

0

Blockquote反斜杠 - 默认情况下 - 在SQL中没有特殊意义。这可能是由任何代码处理这些值(并将它们发送到数据库)造成的。在这里看到一个在线例如:rextester.com/QLLYG57275 - a_horse_with_no_name

我接受这个作为答案,因为我已经证明,这个问题是从后端代码构建SQL,而不是如何在SQL正在数据库端处理。