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

5sxhfpxr  于 2023-10-23  发布在  SQLite
关注(0)|答案(2)|浏览(167)

我试图在SQLite中基于字符串进行查询,但遇到的问题是字符串包含双引号(“)。我还没想好怎么摆脱它。
我正在使用DB Browser for SQLite。弦是3”钉。它是以编程方式插入的,但当我试图以编程方式或通过SQLite浏览器查询它时,它返回0行,注意到我的查询,但字符串文字为 *'3 & quotNail'**(在'quot'部分后有一个后缀,但我不能把它放在这里,或者它将其转换为“)。我怀疑这是我的问题;这是一个不同的字符插入比我试图查询,但我不知道如何确定这一点。
为了记录在案,我已经尝试使用单引号(')和反斜杠(\)进行转义,所以我尝试了以下查询:

1. SELECT * FROM TABLE WHERE NAME = '3" Nail';
 2. SELECT * FROM TABLE WHERE NAME = '3\" Nail';
 3. SELECT * FROM TABLE WHERE NAME = '3'" Nail';
 4. SELECT * FROM TABLE WHERE NAME = '3'''' Nail';
 5. SELECT * FROM TABLE WHERE NAME = '3\'\' Nail';

任何帮助都将不胜感激!

  • 更新--
    所有的。我道歉。停止追捕。我已经弄清楚了问题所在。
    为了简化问题,我展示了一个简单的查询,但实际上我尝试的查询更复杂。它涉及一个JOIN,它失败了,因为插入数据的函数关闭了。它首先插入到一个表中,然后在该表中查询刚刚插入的项的ID,并在插入到第二个表中时使用该ID。该查询在名称周围使用了转义双引号(“)而不是单引号(')。显然,这在正常情况下工作得很好,但在双引号的情况下却卡住了,所以对ID的查询返回零行,因此没有执行二次插入。
    由于我的查询使用了这些表的JOIN,并且第二个表中没有名称的数据,因此它成功完成,但返回0行。我已经检查了第一个表,以确保我需要的数据在那里,但我甚至没有想到要检查另一个表。
    我更正了insert函数,现在查询可以正常工作了。
    我应该在发布问题之前做得更好。我很抱歉,但真诚地感谢你的帮助。
vx6bjr1n

vx6bjr1n1#

SQL标准规定,字符串中的单引号通过将两个单引号放在一行中进行转义。SQL在这方面就像Pascal编程语言一样。SQLite遵循此标准。

  • 也适用于双引号。*
INSERT INTO TABLENAME VALUES("WHAT""S THAT")
INSERT INTO TABLENAME VALUES("WHAT''S THAT")

如何使用包含嵌入单引号(')字符的字符串文字

3ks5zfa0

3ks5zfa02#

''之间,您可以使用双引号而不进行转义,如下所示,因此'3" Nail'的计算结果为3" Nail。* 我的回答解释得更多:

↓       ↓           
SELECT * FROM TABLE WHERE NAME = '3" Nail';

此外,您不能使用双引号将值括起来,如下所示,因为存在错误:

↓ Error  ↓ 
SELECT * FROM TABLE WHERE NAME = "3"" Nail";

相关问题