我编写了数据库模式(到目前为止只有一个表),并在一个文件中编写了该表的INSERT语句.然后我创建了数据库,如下所示:
$ sqlite3 newdatabase.db SQLite version 3.4.0 Enter ".help" for instructions sqlite> .read ./schema.sql SQL error near line 16: near "s": syntax error
我的文件的第16行看起来像这样:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
问题是单引号的转义字符.我也试过双重转义单引号(使用\\\'
而不是\'
),但这也不起作用.我究竟做错了什么?
尝试将单引号加倍(许多数据库都希望这样),所以它会是:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there''s');
文件中的相关引用:
通过将字符串括在单引号(')中形成字符串常量.字符串中的单引号可以通过在行中放入两个单引号来编码 - 如Pascal中所示.不支持使用反斜杠字符的C样式转义,因为它们不是标准SQL.BLOB文字是包含十六进制数据的字符串文字,前面是单个"x"或"X"字符....文字值也可以是令牌"NULL".
我相信你想通过加倍单引号来逃避:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there''s');
要替换字符串中的所有('),请使用
.replace(/\'/g,"''")
例:
sample = "St. Mary's and St. John's"; escapedSample = sample.replace(/\'/g,"''")