将CONCAT与SUBSTR结合使用

问题描述 投票:0回答:4

我想写一个选择,只会给我一个独特的年份(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,SUBSTR从第7个字符串开始,长度为2个字符串(所以我得到18,17,16 ...)

sql oracle concat substr
4个回答
2
投票

尝试如下

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

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


0
投票

您可以使用

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

Demo


0
投票

这将工作:

select distinct extract(year from as_of_date) from History;

extract函数取消as_of_date,前提是它是date数据类型,而distinct只选择一个用于提取中多次的日期。

© www.soinside.com 2019 - 2024. All rights reserved.