MySQL中是否有类似于basename()的函数?

7
在 PHP 中,basename 函数返回路径的文件名。
在 MySQL 查询的 SELECT 语句中,是否有一种方法可以实现此功能?这样做会很好,因为我可以直接应用 ORDER BY
2个回答

18
您可以使用SUBSTRING_INDEX函数,通过指定的分隔符获取最后一个元素。在这种情况下,分隔符是斜杠。如果要使用反斜杠,可以简单地使用"\\"
SELECT
    Path,
    SUBSTRING_INDEX(Path, '/', -1) AS FileName
FROM
    files

示例结果行:

路径 = downloads/apps/file1.exe
文件名 = file1.exe


2

使用上面的答案,可以将其制作成一个mysql函数:

CREATE DEFINER=`root`@`%` FUNCTION `basename`(path VARCHAR(512)) RETURNS varchar(512) CHARSET latin1 
BEGIN
    return SUBSTRING_INDEX(SUBSTRING_INDEX(path, '/', -1), '\\', -1);
END

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接