如何通过sql查询获取文件的文件扩展名?

ant*_*nto 8 mysql sql dao subquery

我有一个名为的表datas,我正在执行这样的查询:

SELECT linkurl AS DOWNLOADURL,
       lastrevlevel AS VERSION,
       code AS DESCRIPTION,
       created AS RELEASEDATE,
       name AS TYPE
FROM datas
WHERE id IN (SELECT child_id
          FROM   datas _datas
          WHERE  parent_id = (SELECT Max(id)
                              FROM   datas
                              WHERE  code = 'AN4307SW'))
Run Code Online (Sandbox Code Playgroud)

它返回如下结果:

DOWNLOADURL               VERSION DESCRIPTION RELEASEDATE    TYPE
/artifacts/download.txt   2.0     images       25/6/12      download.txt
Run Code Online (Sandbox Code Playgroud)

Type列中,我正在确定文件的名称.我需要在列中获取文件名的文件扩展名Type.我怎样才能做到这一点?

例子:

TYPE
.txt
.pdf
.xls
Run Code Online (Sandbox Code Playgroud)

Ari*_*ion 22

你可以用SUBSTRING_INDEX.像这样:

select linkurl as DOWNLOADURL,lastrevlevel as VERSION,
code  as DESCRIPTION,created as RELEASEDATE,
SUBSTRING_INDEX(name,'.',-1) as TYPE
from datas where id in
(select child_id from datas _datas 
where parent_id=( select max(id) from datas 
where code = 'AN4307SW'))
Run Code Online (Sandbox Code Playgroud)

编辑

如果您看到有关此功能的文档,我认为这将很好地适用于您的要求.

在分隔符delim的计数出现之前,从字符串str返回子字符串.如果count为正数,则返回最终分隔符左侧的所有内容(从左侧开始计算).如果count为负数,则返回最终分隔符右侧的所有内容(从右侧开始计算).搜索delim时,SUBSTRING_INDEX()执行区分大小写的匹配.

这也将处理这样的情况:

select SUBSTRING_INDEX('Test.Document.doc','.',-1);
Run Code Online (Sandbox Code Playgroud)

EDIT2

如果你正在使用oracle.请在下次正确的问题上标记问题.SUBSTRING_INDEX在甲骨文中没有.但我能看到你可以很容易地做到这一点:

SELECT SUBSTR('Test.Document.doc', INSTR('Test.Document.doc', '.',-1)) 
FROM dual; 
Run Code Online (Sandbox Code Playgroud)

像这样的完整查询:

select linkurl as DOWNLOADURL,lastrevlevel as VERSION,
    code  as DESCRIPTION,created as RELEASEDATE,
    SUBSTR(name, INSTR(name, '.',-1))  as TYPE
    from datas where id in
    (select child_id from datas _datas 
    where parent_id=( select max(id) from datas 
    where code = 'AN4307SW'))
Run Code Online (Sandbox Code Playgroud)

参考这里