ms access 2007 SQL“不喜欢”忽略空白单元格
Posted
技术标签:
【中文标题】ms access 2007 SQL“不喜欢”忽略空白单元格【英文标题】:ms access 2007 SQL "not like" is ignoring blank cells 【发布时间】:2011-02-17 15:46:05 【问题描述】:我对尝试运行的一些 SQL 感到困惑。这是一个示例数据集
Username ID Text1
red55 1235342 fdfdf
black 5542121 sdsd
red32 5542145 sffrds
green 5542911
bluee 5333121 ffds
所以 SQL 应该是
SELECT username, ID, Text1
FROM user_info
WHERE username NOT LIKE 'red*'
AND text1 NOT LIKE 'sd*';
所以我希望看到一个结果集
Username ID Text1
green 5542911
bluee 5333121 ffds
但它不起作用。它似乎忽略了空白值。我只会看到一个记录(不像上面的两个)。我需要我的 SQL 来简单地告诉我不以“red”开头的记录以及不以“sd”开头的任何记录。然而,它要么去掉所有的 AND 空格,要么如果我使用 OR 语句,则去掉一个。
有什么想法吗?我被困在这里!
【问题讨论】:
【参考方案1】:您需要显式处理空值。一种选择是:
SELECT username, ID, Text1
FROM user_info
WHERE (username Is Null OR username NOT LIKE 'red*')
AND (text1 Is Null OR text1 NOT LIKE 'sd*')
【讨论】:
另一种选择是“设计”可空列。 @onedaywhen:我喜欢这个建议,但是有几种方法可以做到。任何关于它的cmets,或指向其他地方讨论它的指针。我对选项的想法是:1. 更改数据类型,2. 定义默认值或 3. 将列转换为另一个表中的行。一个有趣的话题,对我来说几乎所有与架构设计有关的话题。 @David-W-Fenton:Hugh Darwen (dcs.warwick.ac.uk/~hugh/TTM/Missing-info-without-nulls.pdf) 的“如何在不使用 NULL 的情况下处理丢失的信息”,尽管您已经阅读过 IIRC 并讨厌它 ;) 啊,是的——那个文章。我讨厌它。它有很多完全的精神错乱。 Null 没有任何问题,但有充分的理由根据具体情况从系统中设计它们。但我绝对不会制定这样做的原则。以上是关于ms access 2007 SQL“不喜欢”忽略空白单元格的主要内容,如果未能解决你的问题,请参考以下文章
在 MS Access 2007 中对 ODBC 表导入 sql 查询
如何在 MS Access 2007 或 MS SQL Server 2005 中通过 SQL 将字段转换为行