用户登录
用户注册

分享至

postgresql when

  • 作者: just喔喔
  • 来源: 51数据库
  • 2020-10-03
这段代码主体是case when 判断语句,是根据i.time_at_job值的不同而返回不同的数值。
前面3个when是按特定的字串来返回特定的数值(如6_m返回0; 6_months_to_1_year返回1; 1_year_to_2_years返回2);
从第四个when开始(有~ '^[0-9]+$'的条件),是先按照正则表达式匹配到i.time_at_job为数值字符串,再按照将i.time_at_job转换为数值之后的范围来返回不同的值: 大于等于5且小于12,或者大于等于60返回5;大于等于12时返回除以12的四舍五入值整数(round函数);如果小于5,则返回转换后的整数值。
~ '^[0-9]+$'这个符号应该作为两个部分: ~为正则表达式的匹配运算符,它是区分大小写的,它是一个2元运算符,如果~前的字符串匹配后面的正则表达式,则返回true,否则返回false;后面的字符串为一个正则表达式字符串,代表要匹配的字符串必须全部为数字,并且至少有一个数字。用在该SQL中的作用就是确保i.time_at_job的值为一个数字字符串。



  returns integer
意思是 ?这个 名称为 populate? 的 ?function

返回值的数据类型是 ? ?integer ?类型的。


as ?意味着 ? ? 后面是函数的代码部分。


$$ 意思是 实际代码的开始, ? 当遇到下一个 $$ 的时候, 为代码的结束


最后就是 ?language plpgsql;


意思是 整个 ?创建 ?函数的 ?语句结束了, ?数据库去编译整个代码。


test=#?create?or?replace?function?helloworld4()?returns?varchar?as
test-#?$$
test$#?begin
test$#???return?'hello?world!';
test$#?end;
test$#?$$
test-#?language?plpgsql;
create?function


test=#
test=#?select?helloworld4();
?helloworld4
--------------
?hello?world!
(1?行记录)
软件
前端设计
程序设计
Java相关