包含分号的SQL语句会导致错误

Dan*_*iel 7 sql sqlite

一些人已经报告过,带引号的字符串中的分号会导致SQL错误.

我当前的设置是一个SQLite 3数据库,我正在尝试执行插入,我的一个新数据的字段包含一些HTML,作为其中的一部分,我有以分号结尾的html实体,例如 - è

我正在尝试的一个简单的精简示例查询如下:

insert into my_table (some_field) values ('Hello; world');
Run Code Online (Sandbox Code Playgroud)

而我得到的错误是:

1)

insert into my_table (some_field) values ('Hello
Error : unrecognized token: "'Hello"
Run Code Online (Sandbox Code Playgroud)

2)

world')
Error : near "world": syntax error
Run Code Online (Sandbox Code Playgroud)

因此,SQL引擎显然会看到分号Hello; world并将其解释为语句的结尾.我已经让其他几个人测试了这个,有些人在使用SQLite GUI时会发现它让我相信它只是一个需要改变的SQL设置.

似乎至少在默认情况下,SQL引擎只需要半冒号来结束语句,有人知道如何更改它吗?

这很奇怪,请尝试以下查询:

DROP TABLE IF EXISTS djp;
CREATE Table djp ("mykey" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" VARCHAR(25));
INSERT INTO djp (name) VALUES ('This is test two; OK?');
SELECT * FROM djp;
Run Code Online (Sandbox Code Playgroud)

请注意,如果我插入时未指定要插入的字段(使我的自动增量有点无意义),则不会发生错误...

INSERT INTO djp VALUES (1, 'This is test two; OK?');
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 2

正如评论中所述,我在独立sqlite3.exe引擎中运行了您的代码示例,并且它像任何其他文本一样执行(带或不带分号)。既然你指出了INSERT INTO Foo VALUES ()INSERT INTO Foo (column) VALUES ()怪癖,我同意这不是你的代码的问题,而是 Navicat 的一个错误。