我有一个名为VHS_Metadata_Aug52014
列的表:
Title, Description,Tag, Speaker, VIP, FilmingLocation, Notes
我正在尝试编写一个查询,该查询返回该单词"News"
没有任何值的所有记录。确实有这种类型的记录。但是,下面的查询什么也不返回。所以,我猜我不太了解如何做到这一点。我正在使用 MS Access,通配符是*
.
更新:我刚刚也尝试使用以下语法:
Not VHS_Metadata_Aug52014!Description like '*News*'
而且我仍然没有命中。
select * from VHS_Metadata_Aug52014 where (
VHS_Metadata_Aug52014!Title Not like '*' & 'News' & '*'
And
VHS_Metadata_Aug52014!Description Not like '*' & 'News' & '*'
And
VHS_Metadata_Aug52014!Tag Not like '*' & 'News' & '*'
And
VHS_Metadata_Aug52014!Speaker Not like '*' & 'News' & '*'
And
VHS_Metadata_Aug52014!VIP Not like '*' & 'News' & '*'
And
VHS_Metadata_Aug52014!FilmingLocation Not like '*' & 'News' & '*'
And
VHS_Metadata_Aug52014!Notes Not like '*' & 'News' & '*'
) ;
问题很可能是某些
NULL
值。不幸的是,NULL LIKE 'anypattern'
不会导致FALSE
但在UNKNOWN
并且NOT UNKNOWN
仍然是UNKNOWN
。因此,其中一个或多个值为 Null 的任何行都不会出现在结果列表中,因为WHERE
过滤了所有条件不是TRUE
(FALSE
并被UKNOWN
拒绝)的行。试试这个改变:
对于 Microsoft SQL Server、MySQL、PostgreSQL 等,通配符不是 *,而是 %。
如果您在 SQL 文档中搜索“通配符”,您应该会找到特定服务器支持的通配符。
编辑:发表评论:对不起,我从来没有写过 MS Access 查询。