我有一个用于网站的Access数据库。在DB中,有一个图像文件名字段,用于在站点上显示图像。在某些情况下,负责收集图像的人员在保存时使用图像文件中的#字符开始,这导致图像无法在网站上显示。
无论如何,只过滤出图像字段包含'#'的记录。字符?
我尝试过的所有内容都将Access视为通配符并接收任何数字。
答案 0 :(得分:3)
如评论中所述,您可以通过检查字段是否为#
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
子句中。