描述
最近公司在将原有的数据库迁移到人大金仓中,主要还是应客户要求,使用国产化数据库。所以在使用的过程中,会有一些小小的差别,故在此记录一下 持续更新中…
1.拼接符
拼接符 + -> || 或者用concat
select 'a'+'b'
转换成
select 'a'||'b'
或者
select concat('a','b')
2.类型转换
convert、to_char、str()
转成
cast(xxx as char)
或者
cast(xxx as text)
不过to_char在金仓中也能使用
3.null判断
isnull()、NVL()
转成
coalesce()
4.取长度
len(xxx)
转成
length(xxx)
5.获取时间长度
datalength(xx)
转成
length(xx)
6.获取当前时间
getdate()
转成
now()
7.top选取
top 改成 limit
select top 1 from user where name like '%王%'
改为
select * from user where name like '%王%' limit 1
8.year()、month()函数
可以使用to_char进行代替
获取年份
to_char('2021-12-15','yyyy')
获取月份
to_char('2021-12-15','mm')
9.datediff()时间差函数
可以使用extract()
获取相差小时数(正数)
extract(hour from age(‘2021-12-16’,now()))
12月27日
添加一个替代函数…
10.dateadd()
函数在日期中添加或减去指定的时间间隔
转金仓可使用:
(time + interval '-1 day')
描述:
time为被修改的时间字段;
-1 day 为将time的天数减一;
1 day 为将time的天数加一;
注:如果要操作的单位是年或是月,则对应使用year或month。
2023-08-17
增加两个结果集串联函数
11.string_agg()和array_agg()
在金仓中已经验证过能够正常使用(这里使用的是V8
)
string_agg(expression,delimiter)
描述:
expression:是要处理的字符类型数据。
delimiter:串联的分割符。
查询到的数据如下:
进行串联后:
我这里采用";"作分隔符。
array_agg()和string_agg()的功能基本一样,但是区别就是string_agg()返回的结果是字符串,而array_agg()返回的是字符类型数组。
string_agg(expression)
描述:
expression:是要处理的字符类型数据。