赞
踩
前言
最近公司弄了个新项目,数据库指定使用kingbase数据库
刚开始一看这名字都不知道这是啥数据库,后来百度一搜,看到中文名字就知道了。
虽然没用过,但那几个国产数据库也听说过
这不,刚开始用,语法都不熟悉,有的百度找,有的自己试,用过的语法和函数在这里记录一下
nullif(替换值,原始值)
意思是如果原始值为null,则输出替换值
(跟其他数据库的函数正好反过来了,其他ifnull、nvl、coalesce这些都是第一个参数是原始值,第二个参数是替换值)
本来以为是nullif函数,后来试了几次发现有问题,有时候正常有时候不正常。这数据库,一言难尽。
只能用笨方法了,case判断
SELECT case when max(SORT) is null then 0 else max(SORT) end sort FROM TABLE
已经设置好了当前模式的情况下
关联查询语法跟正常SQL没啥区别,但是有一点很难受,关联其他表查询的时候,必须在关联的表前面加上当前模式名称,不加就报错。单表查询就不用加模式名称
不加模式名称
加了之后
group_concat(需要逗号连接的字段)
跟mysql中的函数名一样,配合group by使用,把多行值用逗号连接显示
配置类里面已经像下面这样配置好了分页插件和它使用的数据库类型
但是使用的时候报错 “使用 PageHelper 分页插件时,必须设置 helper 属性”
想了一下分页语法跟postgresql一样,就在使用的时候加了个指定数据库为postgresql
就能正常使用了,如下
比如我现在想统计一个表中按时间字段分组,每天的type为0和为1的记录数
错误写法1:
- select to_char(time, 'yyyy-MM-dd'),
- count(type = 0) inCount,
- count(type = 1) outCount
- from t_access_record
- group by to_char(time, 'yyyy-MM-dd')
错误写法2:
- select to_char(time, 'yyyy-MM-dd'),
- count(case when type = 0 then 1 else 0 end) inCount,
- count(case when type = 1 then 1 else 0 end) outCount
- from t_access_record
- group by to_char(time, 'yyyy-MM-dd')
上面两种写法结果都是总条数,并没有按括号中的条件统计
正确写法:
- select to_char(time, 'yyyy-MM-dd'),
- sum(case when type = 0 then 1 else 0 end) inCount,
- sum(case when type = 1 then 1 else 0 end) outCount
- from t_access_record
- group by to_char(time, 'yyyy-MM-dd')
目前发现的只有这些,后面有问题继续补充……
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。