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)
参考这里