我在数据库中有很多带有特殊字 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/