• postgreSQL中的case用法说明


    这篇文章主要介绍了postgreSQL中的case用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    工具:postgreSQL

    Navicat Premium

    又一次在看代码的时候,发现了不懂的东西!

    这次就是case when then

    SQL CASE表达式是一种通用的条件表达式,类似于其它语言中的if/else语句。

    1.      CASE WHEN condition THEN result
           [WHEN ...]
           [ELSE result]
           END

    解释:

    condition是一个返回boolean的表达式。

    如果为真,那么CASE表达式的结果就是符合条件的result。

    如果结果为假,那么以相同方式 搜寻随后的WHEN子句。

    如果没有WHEN condition为真,那么case表达式的结果就是在ELSE子句里的值。

    如果省略了ELSE子句而且没有匹配的条件,结果为NULL。

    select * from city;

    我们的测试数据:

    postgreSQL中的case用法说明

     1 select SUM(city_id),case name
     2 when '北京' then '古都'
     3 when '西安' THEN '古都'
     4 when '上海' THEN '魔都'
     5 when 'NewYork' then '纽约'
     6 else '其他城市' END
     7 from city
     8 GROUP BY
     9 case name
    10 when '北京' then '古都'
    11 when '西安' THEN '古都'
    12 when '上海' THEN '魔都'
    13 when 'NewYork' then '纽约'
    14 else '其他城市' END

    结果如下:

    postgreSQL中的case用法说明

    select sum(city_id),CASE
    when city_id < 3 then '小于3'
    when city_id > 8 then '大于8'
    else '大于3小于8' END
    FROM city
    group by
    CASE
    when city_id < 3 then '小于3'
    when city_id > 8 then '大于8'
    else '大于3小于8' END
    order by
    CASE
    when city_id < 3 then '小于3'
    when city_id > 8 then '大于8'
    else '大于3小于8' END DESC
    结果如下:

    postgreSQL中的case用法说明

    根据上面两个例子可以明确的看出:

    第一:为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块

    第二:为了在ORDER BY块中使用CASE,查询语句需要在ORDER BY块中重复SELECT 块中的 CASE 块

    第三:如果要比较的数据为数字,则在case 后不能写 字段名,如果要比较的数据为字符,则要在case后写上字段名

    补充:Postgresql中(case、when)的用法

    1 case when
    1.  1 (
       2      case
       3      when substr(starttime::varchar,0,5)='2020' then '2020年'
       4      when substr(starttime::varchar,0,5)='2019' then '2019年'
       5      when substr(starttime::varchar,0,5)='2018' then '2018年'
       6      when substr(starttime::varchar,0,5)='2017' then '2017年'
       7      when substr(starttime::varchar,0,5)='2016' then '2016年'
       8      when substr(starttime::varchar,0,5)='2015' then '2015年'
       9      when substr(starttime::varchar,0,5)='2014' then '2014年'
      10      when substr(starttime::varchar,0,5)='2013' then '2013年'
      11      when substr(starttime::varchar,0,5)='2012' then '2012年'
      12      when substr(starttime::varchar,0,5)='2011' then '2011年'
      13      when substr(starttime::varchar,0,5)='2010' then '2010年'
      14      when starttime is null then '其他年份' end
      15      ) AS year

    2.mybatis中判断某个传参是否为空

    <if test="geojsonString !=null and geojsonString !=''">
             WHERE
             st_intersects(geom,st_geomfromgeojson(#{geojsonString}))
    </if>

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

  • 相关阅读:
    kaili开启sshd服务
    开源入侵检测系统OSSEC搭建之二:客户端安装
    OSSEC配置文件ossec.conf中添加mysql服务
    OSSEC 安装执行./install.sh详细信息
    开源入侵检测系统OSSEC搭建之一:服务端安装
    Ossec常用命令
    电子取证工具
    CentOS7安装mysql-server
    区块链技术
    支付标记化(Tokenization)技术
  • 原文地址:https://www.cnblogs.com/Thenext/p/16474228.html
Copyright © 2020-2023  润新知