在iPhone应用上工作。我刚刚将一些记录导入SQL Lite数据库,并且所有常规引号都被“加倍”。一个例子:
所需的最终格式: 歌曲“ABC”将在下午3点播放。
该记录目前在数据库中显示为:
歌曲“”ABC“”将在下午3点播放。
有谁知道如何进行SQL更新以将所有“双倍”引号更改为常规引号?
只是为了澄清,我正在直接查看数据库,而不是通过代码。代码只会将它们显示为“双倍”引号,就像它们出现在数据库中一样,所以我想删除它们。 “双重”引号实际上也在导入文件中,但如果我尝试删除它们,则导入失败。所以我把它们保存在那里,现在记录已成功导入到数据库中,现在我只想用大量SQL更新来纠正“双重”引用事件,如果可能的话。提前感谢任何见解!
答案 0 :(得分:2)
SQLite使用单引号来转义字符串文字。它通过添加另一个单引号(同样用于双引号)来逃避单引号。从技术上讲,只要您的SQL构造良好,导入过程就可以正常工作。字符串应该用单引号括起来,而不是双引号。我怀疑你的代码可能是手工构建SQL而不是绑定/正确转义值。
SQLite有一个内置函数来引用字符串。这叫做报价。以下是一些示例输入和相应的输出:
sqlite> SELECT quote("foo");
'foo'
sqlite> SELECT quote("foo ""bar""");
'foo "bar"'
sqlite> SELECT quote("foo 'bar'");
'foo ''bar'''
所以你可以在使用NSString方法转到SQLite之前删除两次转义的双引号。
[@"badString\"\"" stringByReplacingOccurrencesOfString:@"\"\"" withString:@"\""];
如果数据库已经包含错误值,那么您可以运行以下更新SQL来清理它:
UPDATE table SET column = REPLACE(column, '""', '"');