从MySQL数据库中获取所有具有特殊字符的文件,但我没有';“我不想使用”;或;查询中所有特殊字符的条件

从MySQL数据库中获取所有具有特殊字符的文件,但我没有';“我不想使用”;或;查询中所有特殊字符的条件,mysql,sql,Mysql,Sql,我在数据库中有很多文件,有一些特殊的字符文件名。所以我想获取所有具有特殊字符的文件 我编写了下面的查询来获取具有特殊字符的文件 例如: 文件名: file!1.pdf file$2.pdf file!3.pdf file*4.pdf file&5.pdf file$6.pdf file£7.pdf file8.pdf file9.pdf file10.pdf 查询是: SELECT * FROM file_managed WHERE filename LIKE "%$%" OR f

我在数据库中有很多文件,有一些特殊的字符文件名。所以我想获取所有具有特殊字符的文件

我编写了下面的查询来获取具有特殊字符的文件

例如:

文件名:

file!1.pdf 
file$2.pdf 
file!3.pdf
file*4.pdf
file&5.pdf
file$6.pdf
file£7.pdf
file8.pdf
file9.pdf
file10.pdf
查询是:

SELECT *
FROM file_managed
WHERE filename LIKE "%$%" OR filename LIKE "%!%" ;
或者

它工作的很好,但我有近25个特殊的字符过滤。我认为这不是一个很好的查询来达到我的要求


如何编写查询,以便不需要为所有特殊字符添加“或”条件?

使用正则表达式:

SELECT * FROM file_managed WHERE filename LIKE '[!@#$%]'
select fm.*
from file_managed fm
where filename regexp '[^a-zA-Z0-9._]'
这将查找字母数字、下划线和句点

如果您有特定的排除列表,请使用相同的想法:

select fm.*
from file_managed fm
where filename regexp '[!@#$%^&*()]'

只需将列表添加到
[
]
之间。如果这些是要显式包含的无效字符,请使用正则表达式转义字符。

使用正则表达式:

select fm.*
from file_managed fm
where filename regexp '[^a-zA-Z0-9._]'
这将查找字母数字、下划线和句点

如果您有特定的排除列表,请使用相同的想法:

select fm.*
from file_managed fm
where filename regexp '[!@#$%^&*()]'

只需将列表添加到
[
]
之间。如果这些是要显式包含的无效字符,请使用正则表达式转义字符。

请尝试以下查询:

select 
*from file_managed
where filename regexp '[!@]'

请尝试以下查询:

select 
*from file_managed
where filename regexp '[!@]'

嗨,迈克尔,这个问题对我不起作用。我得到的结果是零。嗨,迈克尔,这个查询对我不起作用。我得到的结果是零。