sqlite数据库中'anything'和“anything”之间的区别

时间:2012-02-28 07:49:56

标签: database sqlite

sqlite数据库中“任何东西”和“任何东西”有什么区别?
据我所知,单引号用于表示字符串,而双引号用于表示关键字 但是,我使用column_name="value"作为查询中的where子句,数据库接受该查询。为什么呢?
感谢..

2 个答案:

答案 0 :(得分:2)

来自sqlite网页;

http://www.sqlite.org/lang_keywords.html

  

如果在单引号中使用关键字(例如:'键'或' glob')   允许使用标识符但字符串文字所在的上下文   不允许,然后令牌被理解为标识符   字符串文字。

     

如果在双引号中使用关键字(例如:"键"或" glob")   上下文,它无法解析为标识符,但在哪里   允许使用字符串文字,然后将标记理解为字符串   字面而不是标识符。

答案 1 :(得分:1)

的确,如果你的意思是“文字字符串”,请注意使用双“引号”! 今天我很困惑:

sqlite> select * FROM words WHERE word = "id";
<nothing>

sqlite> select * FROM words WHERE word = 'id';
13556|id

架构:

sqlite> .schema
CREATE TABLE words (
 id integer primary key,
 word   varchar(64)
);

由于存在名为id的列,因此“id”在此处被解释为名为id的列,而不是文字字符串“id”!如果您不需要双引号,最好避免使用双引号。