无论如何要过滤包含'#'的访问记录?

时间:2014-12-04 17:26:46

标签: ms-access

我有一个用于网站的Access数据库。在DB中,有一个图像文件名字段,用于在站点上显示图像。在某些情况下,负责收集图像的人员在保存时使用图像文件中的#字符开始,这导致图像无法在网站上显示。

无论如何,只过滤出图像字段包含'#'的记录。字符?

我尝试过的所有内容都将Access视为通配符并接收任何数字。

1 个答案:

答案 0 :(得分:3)

如评论中所述,您可以通过检查字段是否为#

来选择 image_file_name 字段中包含LIKE '*[#]*'的行

但是,由于您要过滤掉这些行,请定位该模式匹配的反转... NOT LIKE '*[#]*'

这样的查询可以在具有默认设置的Access会话中使用:

SELECT y.*
FROM YourTable AS y
WHERE y.image_file_name Not Like '*[#]*';

但是,由于您使用Access数据库来提供网站,因此您可能正在使用ADO / OleDb连接到db文件。如果是这种情况,请使用%代替*作为通配符:

WHERE y.image_file_name Not Like '%[#]%';

或者您可以使用Alike代替Like。在这种情况下,通配符应始终为%,无论您是从Access内部还是外部运行,查询都将正常运行:

WHERE y.image_file_name Not ALike '%[#]%';

完全不同的方法是使用InStr image_file_name 中查找#的位置,并选择InStr返回零的行:

SELECT y.*
FROM YourTable AS y
WHERE InStr(1, y.image_file_name, '#') = 0;

如果您还想要 image_file_name 为空的行,则可以使用WHERE将该条件添加到OR子句中。