2017-05-04 100 views
0

我有一个表,年份,字段作为字段。在表中的当前值的格式如下:从年份中删除前两位数 - Postgresql

year | term 
------------ 
2006 | S1 
2007 | S2 
2009 | S1 
2010 | S2 

我使用下面的代码没有成功:

select concat (replace(term, 'S', 's'), year) as test from semesters; 

我得到如下结果:

Test 
---- 
s12006 
s22007 
s12009 
s12010 

我想运行查询,我将以这种格式得到结果:

Test 
----- 
s106 
s207 
s109 
s210 

请给我一些关于如何在postgresql中实现这一点的指针。由于

+0

子串来到心神。 – jarlh

+0

'date_format(year,'%y')''选择concat(替换(term,'S','s'),date_format(year,'%y'))作为来自学期的测试;' – xQbert

+1

RIGHT(year,2 )如果你知道所有年份的长度都是4,那么它也可以工作 –

回答

0

你只是想最后两个字符从一年,所以:

select concat(replace(term, 'S', 's'), right(year, 2)) as test 
from semesters; 

或者,如果你想成为幻想,用overlay()

select overlay(year placing lower(term) from 1 for 2) 
0
select lower(term) || to_char(to_date(year::text, 'YYYY'), 'YY'); 
0

这个工作对我最终:

select cast(concat (SUBSTR(cast (year as text), 3,4), 
replace(term, 'S', 's')) as char(4)) as test from semesters; 
相关问题