5

我为一个包含几列的 Android 应用程序创建了一个 SQLite FTS3 表。该表由用户的输入填充。但是,并非所有表列都应该有一个值。示例:有一个名为 PLURAL 的列。用户提交的单词是动词(不是名词),因此 PLURAL 列不应该有值。

我应该在 PLURAL 列中输入什么,NULL 值或空字符串“”?

除了影响答案的逻辑之外,如果我在空字符串值上使用 NULL,数据库性能是否有任何显着差异?如果我使用 NULL 值,是否有任何已知问题(例如抛出异常)?

我在网上搜索了一些关于其他数据库的意见,但在 SQLite fts3 上没有。

谢谢!

4

2 回答 2

5

基于逻辑:您不应该插入空字符串但是NULL,因为在 SQL 中 wordNULL被视为NO VALUE

没有与字符串的空性或无效性相关的性能问题。唯一的考虑可能出现在 SQLinner join语句的情况下。仅连接适合连接条件的INNER JOIN非字段。NULL有一些特殊的LEFT/RIGHT JOIN语句允许NULL在连接中使用字段。

于 2014-09-05T12:51:34.570 回答
1

在阅读了多个帖子后,我了解到它将 null 处理为来自不同数据库引擎的行为的组合。

目标是让 SQLite 以符合标准的方式处理 NULL。但是 SQL 标准中关于如何处理 NULL 的描述似乎模棱两可。从标准文档中并不清楚在所有情况下应该如何处理 NULL。

有关详细信息,请参阅此 http://www.sqlite.org/nulls.html

于 2014-09-05T12:57:00.390 回答