Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询使用LIKE和通配符匹配除空字符串以外的任何内容_Mysql_Sql - Fatal编程技术网

MySQL查询使用LIKE和通配符匹配除空字符串以外的任何内容

MySQL查询使用LIKE和通配符匹配除空字符串以外的任何内容,mysql,sql,Mysql,Sql,我有一个名为images的表,它有一个字段image\u文件名。我注意到,一些已存储的图像在文件扩展名后有字符,这些字符无法正确加载。所以说文件名是image.jpg这很好,可以忽略,但是如果文件名是image.jpg%3fhf43h408,那么我需要删除此图像。这是我到目前为止的查询,用于尝试并选择扩展后包含内容的所有图像: SELECT `images`.* FROM images WHERE `images`.`image_filename` LIKE '%.jpg\%' 这将返回所有

我有一个名为images的表,它有一个字段image\u文件名。我注意到,一些已存储的图像在文件扩展名后有字符,这些字符无法正确加载。所以说文件名是image.jpg这很好,可以忽略,但是如果文件名是image.jpg%3fhf43h408,那么我需要删除此图像。这是我到目前为止的查询,用于尝试并选择扩展后包含内容的所有图像:

SELECT `images`.* FROM images
WHERE `images`.`image_filename` LIKE '%.jpg\%' 
这将返回所有图像,即使扩展后没有图像。如何让查询只返回扩展后有内容的图像。为了增加额外的混乱,扩展之后的内容似乎总是以百分号开头,因此我试图在查询中将其转义为文字百分号,而不是通配符。我还尝试了以下方法:

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

但这不起作用,它只是说我有一个错误

返回所有
image\u文件名
不以
结尾的行

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

返回
image\u文件名
未在
.jpg中完全结束的所有行

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

通配符应与一个字符匹配,因此请尝试类似“%.jpg”

它应该匹配
.jpg+1个字符+任何内容


以下是参考:

通配符应与一个字符匹配,因此请尝试使用“%.jpg%”之类的

它应该匹配
.jpg+1个字符+任何内容


这里是参考:

要将反斜杠标识为转义字符,需要使用双反斜杠来表示单个反斜杠

您还需要一个通配符%来匹配字符串的其余部分

要标识包含文字
'.jpg%'
的行,可以使用以下命令:

LIKE '%.jpg\%%' ESCAPE '\\'
标识不以文本
'.jpg'

NOT LIKE '%.jpg'


要将反斜杠标识为转义字符,需要使用双反斜杠来表示单个反斜杠

您还需要一个通配符%来匹配字符串的其余部分

要标识包含文字
'.jpg%'
的行,可以使用以下命令:

LIKE '%.jpg\%%' ESCAPE '\\'
标识不以文本
'.jpg'

NOT LIKE '%.jpg'