我为具有多个列的Android应用创建了一个SQLite FTS3表。该表由用户的输入填充。但是,并非所有表列都应具有值。示例:有一个名为PLURAL的列。用户提交一个动词(不是名词),因此PLURAL列不应该有值。
我应该在PLURAL列中输入什么,NULL值或空字符串“”?
除了影响答案的逻辑外,如果我对空字符串值使用NULL,那么数据库性能是否有任何显着差异?如果我使用NULL值,是否存在任何已知问题(例如抛出异常)?
我在网上搜索过,我在其他数据库上找到了一些意见,但没有在SQLite fts3上找到。
谢谢!
答案 0 :(得分:5)
基于逻辑:您不应该插入空字符串而是NULL
,因为在SQL字NULL
中被视为NO VALUE
没有与字符串的空白或无效相关的性能问题。在SQL inner join
语句的情况下,唯一的考虑因素可能出现。 INNER JOIN
仅加入适合加入条件的非NULL
字段。有一些特殊的LEFT/RIGHT JOIN
语句允许在连接中使用NULL
个字段。
答案 1 :(得分:1)
我在浏览多篇文章后理解的是,它将处理null作为来自不同数据库引擎的行为组合。
目标是让SQLite以符合标准的方式处理NULL。但SQL标准中关于如何处理NULL的描述似乎含糊不清。从标准文档中不清楚在所有情况下应该如何处理NULL。
请参阅此以获取详细信息 http://www.sqlite.org/nulls.html 强>