我试图在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函数,现在查询可以正常工作了。
我应该在发布问题之前做得更好。我很抱歉,但真诚地感谢你的帮助。
2条答案
按热度按时间vx6bjr1n1#
SQL标准规定,字符串中的单引号通过将两个单引号放在一行中进行转义。SQL在这方面就像Pascal编程语言一样。SQLite遵循此标准。
如何使用包含嵌入单引号(')字符的字符串文字
3ks5zfa02#
在
''
之间,您可以使用双引号而不进行转义,如下所示,因此'3" Nail'
的计算结果为3" Nail
。* 我的回答解释得更多:此外,您不能使用双引号将值括起来,如下所示,因为存在错误: