2022-10-09 17:04:44
谢谢您的回答, 我还有一些疑问
when i.time_at_job ~ '^[0-9]+$' AND
i.time_at_job::integer < 5 then i.time_at_job::integer
~ '^[0-9]+$' 中的~ 怎么理解? 还有 then i.time_at_job::integer 是否输出的是数字?
另外 整个code输出出来的格式有可能是什么样的?
谢谢
~是正则表达式的运算符号,格式stringValue ~ regexValue,其中, stringValue为一个字符串,regexValue为一个正则表达式的字符串;
i.time_at_job::integer是将i.time_at_job转换成整型,::是postgreSQL中的类型转换写法,将符号前的变量转换为符号后指定的类型值;
这个case when得到的结果应该是一个整型值(可能为NULL)。
OK 基本明白了 ~的意思就是开始匹配的意思
整个Code输出出来是不是一列数 类似
time_at_job
0
1
2
3
5
这样之类的数字?
只能说这个case when结构返回的是数值,具体查询输出的是什么内容,则是要看你完整的SQL查询语句。
如果SQL语句为select case when ... end as time_at_job from ...,那么得到的结果集就是类似你所举例的那样。
万分感谢!
PostgreSQL还是有很多自己的特性的,就比如这个正则表达式的运算符,像我一直用SQL Server就没有用过这种运算符。这些都是从PostgreSQL帮助文档学来的,只要多看看PosgreSQL的文档,你就能发掘更多的好东西。