如何在SQLite查询中转义字符串中的双引号?

时间:2016-12-29 16:27:13

标签: sql database string sqlite escaping

我正在尝试基于SQLite中的字符串进行查询,但我遇到的问题是当字符串包含双引号(“)时。我还没弄明白如何逃避它。

我正在使用 DB Browser for SQLite 。字符串是 3“Nail 。它是以编程方式插入的,但是当我尝试以编程方式或通过SQLite浏览器进行查询时,它会返回零行,请注意我的查询,但字符串文字为'3& quot Nail'(在'quot'部分后面加一个分号,但我不能把它放在这里,或者把它翻译成“)。我怀疑这是我的问题;插入的字符与我尝试查询的字符不同,但我不知道如何确定。

为了记录,我尝试使用单引号(')和反斜杠(\)进行转义,所以我尝试了以下查询:

{{1}}

非常感谢任何帮助!

- - - - - - - - UPDATE

全部。我道歉。取消狩猎。我已经弄明白了这个问题。

为了简化问题,我展示了一个简单的查询,但我实际尝试的查询更复杂。它涉及一个JOIN,它失败了,因为插入数据的功能已关闭。它首先插入到一个表中,然后查询该表以获取刚插入的项目的ID,并将该ID插入到第二个表中。该查询在名称周围使用了转义双引号(\“)而不是单引号(')。显然这对于​​正常情况工作正常,但是在双引号的情况下窒息,因此ID的查询返回零行,因此,没有执行二次插入。

由于我的查询使用了这些表的JOIN,并且第二个表中没有名称的数据,因此它成功完成,但返回零行。我检查了第一张表,以确保我需要的数据在那里,但它甚至没有想到检查另一张表。

我更正了插入功能,现在查询正常工作。

在发布问题之前,我应该做得更好。我道歉,但真诚地感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

SQL标准指定通过在行中放置两个单引号来转义字符串中的单引号。在这方面,SQL的工作方式类似于Pascal编程语言。 SQLite遵循此标准。

它也适用于双引号。

INSERT INTO TABLENAME VALUES(“WHAT””S THAT”)
INSERT INTO TABLENAME VALUES(“WHAT''S THAT”)

阅读此How do I use a string literal that contains an embedded single-quote (') character