2014-12-04 41 views
1

我有一個正在用於網站的Access數據庫。在數據庫中有一個用於在網站上顯示圖像的圖像文件名稱字段。在某些情況下,負責收集圖像的人員在保存圖像文件名稱時使用#字符開始,這會導致圖像無法顯示在網站上。無論如何過濾包含'#'的訪問記錄?

有沒有辦法過濾出圖像域中包含'#'字符的記錄?

我試過的所有東西都可以像對待通配符一樣處理它,並撿起任何數字。

+3

Gord Thompson發佈了一個驚人的方式:WHERE [ImageFileField] LIKE '* [#] *'' – 4dmonster 2014-12-04 17:51:10

回答

3

正如在評論中提到,你可以選擇有通過檢查該字段是否是LIKE '*[#]*'

但是包含在你的映像文件#行,因爲你要過濾掉那些行,瞄準該模式匹配的逆... NOT LIKE '*[#]*'

像這樣的查詢將訪問會話中工作使用默認設置:

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

但是,由於您使用的Access數據庫飼料的網站,您可能會使用ADO/OleDb連接到數據庫文件。如果是這樣的話,使用%代替*作爲通配符:

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

或者你可以使用Alike,而不是Like。在這種情況下,通配符應該始終%及查詢將正常工作,無論你是從內部或外部訪問的運行它:

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

完全不同的方法是使用InStr找到#位置內映像文件並選擇InStr返回零行:

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

如果你也想行,其中映像文件是空,您可以添加康迪特與ORWHERE子句。