SQLite选择哪里空?

Tim*_*nen 118 sql sqlite select isnullorempty

在SQLite中,如何选择some_column为空的记录?
空计为NULL和"".

Guf*_*ffa 274

有几种方法,比如:

where some_column is null or some_column = ''
Run Code Online (Sandbox Code Playgroud)

要么

where ifnull(some_column, '') = ''
Run Code Online (Sandbox Code Playgroud)

要么

where coalesce(some_column, '') = ''
Run Code Online (Sandbox Code Playgroud)

where ifnull(length(some_column), 0) = 0
Run Code Online (Sandbox Code Playgroud)

  • 应该避免使用length(some_column),因为这可以动态计算长度 - AFAIK当前SQLite对具有文本亲和性的列进行计算.除此之外,你受优化者的支配 - 虽然我希望它们是相同的.您可以使用EXPLAIN验证. (4认同)
  • @Guffa我的意思当然是性能..这是数据库不是吗?优化在dbs中很重要.一点点的性能提升**很多** (3认同)

Dan*_*llo 26

看起来你可以简单地做:

SELECT * FROM your_table WHERE some_column IS NULL OR some_column = '';
Run Code Online (Sandbox Code Playgroud)

测试用例:

CREATE TABLE your_table (id int, some_column varchar(10));

INSERT INTO your_table VALUES (1, NULL);
INSERT INTO your_table VALUES (2, '');
INSERT INTO your_table VALUES (3, 'test');
INSERT INTO your_table VALUES (4, 'another test');
INSERT INTO your_table VALUES (5, NULL);
Run Code Online (Sandbox Code Playgroud)

结果:

SELECT id FROM your_table WHERE some_column IS NULL OR some_column = '';

id        
----------
1         
2         
5    
Run Code Online (Sandbox Code Playgroud)

  • +1:我也考虑使用`TRIM(some_column)=''` (4认同)