MySQL中有basename()等价吗?

时间:2015-08-23 11:43:17

标签: php mysql path

PHP中的

basename返回路径的文件名。

有没有办法在MySQL查询的SELECT语句中执行此操作?这样做会很好,所以我可以直接应用ORDER BY

2 个答案:

答案 0 :(得分:8)

您可以使用SUBSTRING_INDEX函数获取特定分隔符后面的最后一个元素,在本例中为斜杠。这也可以与反斜杠一起使用,在这种情况下只需使用"\\"

SELECT
    Path,
    SUBSTRING_INDEX(Path, '/', -1) AS FileName
FROM
    files

示例结果行:

  

路径= downloads / apps / file1.exe
  FileName = file1.exe

答案 1 :(得分:1)

使用上面的答案,可以将其变为mysql函数:

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