前端之家收集整理的这篇文章主要介绍了
MySQL可以检查该文件是否存在?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表,其中包含HDD上实际文件的相对路径.例如:
SELECT * FROM images -->
id | path
1 | /files/1.jpg
2 | /files/2.jpg
我可以创建一个查询来选择指向不存在的文件的所有记录吗?我需要完全通过MysqL服务器检查它,而不使用PHP客户端中的迭代.
最佳答案
我会使用这样的
查询:
SELECT id,path,ISNULL(LOAD_FILE(path)) as not_exists
FROM images
HAVING not_exists = 1
函数LOAD_FILE尝试将文件作为字符串加载,并在失败时返回NULL.
请注意,在这种情况下失败的原因可能是MysqL根本无法读取该特定位置,即使该文件确实存在.
编辑:
正如@ostrokach在评论中指出的那样,这不是标准的sql,即使MysqL允许它,也可以遵循标准:
SELECT *
FROM images
WHERE LOAD_FILE(PATH) IS NULL