sqlite3选择查询不返回单引号行

问题描述:

我有一个表中的一行值为“2005 /妈妈的生日派/ P9160566_1.JPG”。sqlite3选择查询不返回单引号行

我想选择使用下面的语句使用的是Mac 10.13在终端sqlite3的该行:

'select RKMaster.fileName from RKMaster where RKMaster.imagePath = "2005/Mom''s Birthday Pie/P9160566_1.JPG"' 

但它返回一个空的结果。我知道该行存在,因为我可以使用应用程序数据库浏览器为SQLite使用值“妈妈的生日派/ P9160566_1.JPG”过滤imagePath列(无需转义),我可以看到我正在查找的行。

我在做什么错我的sqlite3查询?

+1

用'LIKE'而不是'='工作吗? –

+0

@CL。不,这是行不通的。但是,谢谢你的建议..如果我使用LIKE,同时也代替'通配符%,它确实有效! ''从RKMaster中选择RKMaster.fileName,其中RKMaster.imagePath类似于“2005/Mom%s Birthday Pie/P9160566_1.JPG”'' –

+0

'SELECT hex(imagePath)FROM RKMaster WHERE ...'的输出这一排? –

在一个字符串中,引号必须加倍以避免它们。但是,只对那些实际分隔字符串引号是正确的:

'Mom''s' 
"Mom""s" 
'Mom"s' 
"Mom's" 

(双引号不用于字符串值,它们应该只用于表/列名,和SQLite的只为错误被接受与MySQL兼容。)

+0

好的。但在我的情况下,我用双引号分隔字符串:“。如果我不逃避妈妈的内部单引号,那么当我在终端按回车时,命令不会执行,而是继续等待输入。我试过用'反斜杠'逃脱,但那也行不通。 –

+0

'select“'”;'适合我。 –