2013-02-05 28 views
1

我有一個名爲圖像,它有一個字段image_filename表。我注意到一些已經存儲的圖像在文件擴展名之後有字符,並且這些圖像加載不正確。所以說文件名是image.jpg這是好的,可以忽略,但是如果文件名是image.jpg%3fhf43h408那麼我需要刪除這個圖片。這是我的查詢到目前爲止嘗試和選擇所有擴展後有東西的圖像:MySQL查詢使用LIKE和通配符來匹配任何東西,但空字符串

SELECT `images`.* FROM images 
WHERE `images`.`image_filename` LIKE '%.jpg\%' 

這將返回所有圖像,雖然即使是擴展後,什麼都沒有。如何讓查詢只返回擴展後有內容的圖像。爲了增加額外的混淆,擴展後的內容似乎始終以百分比符號開頭,因此我試圖在查詢中將其轉義爲字面百分比符號而不是通配符。我曾嘗試以下也:

SELECT `images`.* FROM images 
WHERE `images`.`image_filename` LIKE '%.jpg\%' escape '\' 

但是,這並不工作,它只是說,我有一個錯誤

回答

1

返回所有行image_filename沒有結束恰好.jpg

SELECT `images`.* 
FROM images 
WHERE `images`.`image_filename` NOT LIKE '%.jpg' 
1

_通配符應該匹配一個字符,所以請嘗試LIKE '%.jpg_%'
它應與.jpg + 1 char + anything

下面是引用:LIKE operator

2

要獲取標識爲轉義字符的反斜槓,您需要使用雙反斜槓來表示單個反斜槓。

您還需要一個通配符%來匹配字符串的其餘部分。

標識包含文字'.jpg%'行,你可以這樣做:

LIKE '%.jpg\%%' ESCAPE '\\' 

要確定不與字面'.jpg'

NOT LIKE '%.jpg' 

NOT REGEXP '\.jpg$' 
結束列值
相關問題