mysql - 从具有特殊字符的 MySQL 数据库中获取所有文件,但我不想对查询中的所有特殊字符使用 "or"条件

标签 mysql sql

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

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

例如:

文件名:

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 fm.*
from file_managed fm
where filename regexp '[^a-zA-Z0-9._]'

这将查找字母数字、下划线和句点。

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

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

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

关于mysql - 从具有特殊字符的 MySQL 数据库中获取所有文件,但我不想对查询中的所有特殊字符使用 "or"条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45731717/

相关文章:

sql - pandas.read_sql_query() 如何查询 TEMP 表?

mysql - 查询以仅选择类别树/路径位于 varchar 列中的子类别

mysql - SQL WHERE LIKE 或 FILTER

mysql - 自加入和更新

mysql - 查询错误 (1054) : Unknown column 'TableValue' in 'where clause'

使用 group by 聚合计数 { >100 万用户} 的 Mysql 查询性能变慢

php - 准备语句 PDO 给出 NULL 结果 n DB

mysql - 防止 MySQL 脏读阻塞显式写锁?

php - 为什么不推荐使用 PHP 的 mysql_ 函数?

java - JRadioButton 正在选择最后一个