-1

在 iPhone 应用程序上工作。我刚刚将一些记录导入到 SQL Lite 数据库中,并且我所有的常规引号都被“加倍”了。一个例子:

所需的最终格式:歌曲“ABC”将在下午 3 点播放。

该记录当前在数据库中显示为:

歌曲“ABC”将在下午 3 点播放。

有谁知道如何进行 SQL 更新以将所有“双双”引号更改为常规引号?

澄清一下,我直接查看数据库,而不是通过代码。代码只会将它们显示为“双双”引号,就像它们出现在数据库中一样,所以我想删除它们。“双双”引号实际上也在导入文件中,但如果我尝试删除它们,则导入失败。所以我将它们保留在那里,现在记录已成功导入数据库,现在我只想通过大规模 SQL 更新来纠正“双双”引用的事情,如果可能的话。提前感谢您的任何见解!

4

1 回答 1

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, '""', '"');
于 2013-08-17T01:18:17.103 回答