奇怪的sqlite3行为
我正在使用Unix命令行sqlite3命令工具处理一个小型SQLite数据库。我的模式是:奇怪的sqlite3行为,sqlite,Sqlite,我正在使用Unix命令行sqlite3命令工具处理一个小型SQLite数据库。我的模式是: sqlite> .schema CREATE TABLE status (id text, date integer, status text, mode text); 现在我想为所有条目将“mode”列设置为字符串“Status”。但是,如果我键入以下内容: sqlite> UPDATE status SET mode="Status"; 它没有将列“mode”设置为字符串“Status
sqlite> .schema
CREATE TABLE status (id text, date integer, status text, mode text);
现在我想为所有条目将“mode”列设置为字符串“Status”。但是,如果我键入以下内容:
sqlite> UPDATE status SET mode="Status";
它没有将列“mode”设置为字符串“Status”,而是将每个条目设置为当前列“Status”中的值。相反,如果我键入以下内容,它将执行预期的行为:
sqlite> UPDATE status SET mode='Status';
这是正常的行为吗?是的,这在SQL中是正常的 单引号用于字符串值;双引号用于标识符(如表名或列名)。 (请参阅。)这也是常见问题解答:- 我的WHERE子句表达式column1=“column1”不起作用。它导致返回表中的每一行,而不仅仅是column1值为“column1”的行。 在SQL中的字符串文本周围使用单引号,而不是双引号。这是SQL标准所要求的。WHERE子句表达式应为:column1='column2' SQL在包含特殊字符或关键字的标识符(列或表名)周围使用双引号。所以双引号是一种转义标识符名称的方法。因此,当您说column1=“column1”时,它相当于column1=column1,这显然总是正确的