我有一个表,其中保存硬盘上真实文件的相对路径。例如:
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 根本无法读取该特定位置,即使该文件确实存在。
EDIT:
正如 @ostrokach 在评论中指出的那样,这不是标准 SQL,尽管 MySQL 允许这样做,但要遵循它可能是的标准:
SELECT *
FROM images
WHERE LOAD_FILE(PATH) IS NULL
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)