创建一个 postgresql 函数,该函数返回字符串 'fall','spring'取决于年份



我需要创建一个函数,根据一年中的月份返回字符串'fall'或'spring'。如果函数被命名为getterm并且没有参数,我希望在这样的选择语句中使用它:

select name, classname, getterm from classtable

,其中classtable保存我们提供的类的名称。结果集将包括如下列:

-Jack,数据系统,Sp2022

-Jill, Web Stuff, F2023

我使用了now()函数。我也可以使用extract(quarter from now())来获取当前季度。因此,使用if或case子句来根据四分之一返回"spring"或"fall"似乎很简单。我只是没有找到任何这样的函数的例子。

谁能建议一些示例代码?

Per documentation from here CASE:

有一种CASE表达式的"简单"形式,它是上述一般形式的变体:

CASE expression
WHEN value THEN result
[WHEN ...]
[ELSE result]
END

计算第一个表达式,然后与WHEN子句中的每个值表达式进行比较,直到找到一个等于它的值表达式。如果没有找到匹配,则返回ELSE子句的结果(或空值)。这类似于c中的switch语句。

这在你的例子中翻译为:

SELECT
CASE extract('quarter' FROM now())
WHEN 1 THEN
'winter'
WHEN 2 THEN
'spring'
WHEN 3 THEN
'summer'
WHEN 4 THEN
'fall'
END;
case  
--------
spring

谢谢Adrian..我现在有了工作函数:

create function getTermString() returns text as $$
select case extract(quarter from now()) 
when 1 then 'sp'
when 2 then 'sp'
when 3 then 'f'
when 4 then 'f'
end ;
$$ language SQL;

最新更新