将CONCAT与SUBSTR

时间:2019-04-15 16:01:55

标签: sql oracle concat substr

我想写一个精选集,让我仅返回不同的年份(2018、2017、2016)。

我在表HISTORY中有AS_OF_DATE列。

以下是AS_OF_DATE的一些示例值:

31-05-18,
31-04-17,
31-07-16,
...

这是我尝试过的方法,但是不起作用:

SELECT CONCAT('20',DISTINCT SUBSTR(AS_OF_DATE, 7, 2) FROM HISTORY

我使用CONCAT在结果前添加20,并在第7个字符串处开始的SUBSTR加2字符串长(所以我得到18,17,16 ...)

4 个答案:

答案 0 :(得分:2)

尝试如下

SELECT DISTINCT '20' || SUBSTR(AS_OF_DATE, 7, 2) FROM HISTORY

答案 1 :(得分:1)

通常,您可以使用extract()to_char()来做到这一点:

select extract(year from as_of_date) as yyyy

select to_char(as_of_date, 'YYYY') as yyyy

这假设as_of_date是一个日期,应该是这个日期。

如果要使用具有不同年份的结果集,则可以添加select distinct

答案 2 :(得分:0)

您可以使用

  SELECT CONCAT('20', SUBSTR(AS_OF_DATE, -2) ) as "Years"
    FROM HISTORY
   GROUP BY SUBSTR(AS_OF_DATE, -2)
   ORDER BY "Years"

Demo

答案 3 :(得分:0)

这将起作用:

select distinct extract(year from as_of_date) from History;

如果extract函数是as_of_date数据类型,并且date仅针对提取中多次出现的日期选择distinct函数,则该函数将删除$data = 'foobar'; return datatables() ->of($query) ->addColumn('Action', function() use ($data){ return view('Actions.something', compact('data')); }) ->rawColumns(['Action']) ->toJson();