Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的sqlite3行为_Sqlite - Fatal编程技术网

奇怪的sqlite3行为

奇怪的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

我正在使用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”,而是将每个条目设置为当前列“Status”中的值。相反,如果我键入以下内容,它将执行预期的行为:

sqlite> UPDATE status SET mode='Status';

这是正常的行为吗?

是的,这在SQL中是正常的

单引号用于字符串值;双引号用于标识符(如表名或列名)。 (请参阅。)

这也是常见问题解答:-

我的WHERE子句表达式column1=“column1”不起作用。它导致返回表中的每一行,而不仅仅是column1值为“column1”的行。

在SQL中的字符串文本周围使用单引号,而不是双引号。这是SQL标准所要求的。WHERE子句表达式应为:column1='column2'

SQL在包含特殊字符或关键字的标识符(列或表名)周围使用双引号。所以双引号是一种转义标识符名称的方法。因此,当您说column1=“column1”时,它相当于column1=column1,这显然总是正确的