0

我正在使用 Unix 命令行 sqlite3 命令工具开发一个小型 SQLite 数据库。我的架构是:

sqlite> .schema
CREATE TABLE status (id text, date integer, status text, mode text);

现在我想将所有条目的“模式”列设置为字符串“状态”。但是,如果我输入这个:

sqlite> UPDATE status SET mode="Status";

它没有将“模式”列设置为字符串“状态”,而是将每个条目设置为“状态”列中当前的值。相反,如果我键入以下内容,它会执行预期的行为:

sqlite> UPDATE status SET mode='Status';

这是正常行为吗?

4

2 回答 2

1

这也是一个常见问题解答:-

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

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

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

http://www.sqlite.org/faq.html#q24

于 2013-01-08T12:02:47.543 回答
0

是的,这在 SQL 中很正常。

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

于 2013-01-08T11:59:32.447 回答