在这篇博客里面,主要是介绍华为高斯数据库,繁多的数据类型里面,常用的函数操作的方法,然后给大家写了每个函数的用法举例,欢迎留言补充。
字符串函数
trim() :去除字符串左右两边的指定字符,默认是去除空格
substring(字符串, 开始序号, 连续长度)/substr() :截取指定字符串
regexp_like(字符串, 正则表达式) :用正则表达式来搜索数据
例如查询名字中 王开头,中间有一个字,并且是五结尾的所有数据:
再试一个查询符合手机号码规则的方法,现在要查找13开头或者18开头的11位纯数字的信息:
concat() :拼接字符串
concat_ws() :用符号拼接字符串
lpad() / rpad(字符串, 总长度, 填充符号) :字符串的左右填充
upper() / lower() /initcap() :字符串的大小写转换
decode(判断条件, 预期值, 符合结果, 不符合结果) :对条件进行判断,并且输出真假场景下的结果
instr(字符串, 查找的内容) :对字符的位置进行查找
instr(字符串, 查找的内容, 从哪个位置开始, 找匹配的第几个):使用查找的开始序号等对查找的内容进行条件限定
length() :查看字符串长度
replace(字符串, 被替换的内容, 新内容) :字符内容的替换
translate(字符串, 被去除的数据, 依次替换的数据) :将数据依次进行替换,没有替换目标的内容对应空,将被移走
例如:a对应1,bc没有对应的替换值,bc直接被去除,所以 abc 被替换成 1
例如:这里会按顺序,a对应1,b对应2,c对应3 进行数据的替换
例如:要去掉字符串里面所有的数字
string_agg(字符串字段, 连接符 order by 排序) :按照某个顺序对字符串进行拼接
split_part(字符串, '切割符', 序号) :将字符串按照某个符号进行切割,然后展示其中的第几个部分。这里的序号是从1开始的
如果我们要获取最后一个字段,但是不知道这个字符的长度,也不知道会被切割成几份,就需要自己编写规则去获取数据了。
string_to_array(字符串, 切割符) :将字符串按切割符切割成数组
regexp_split_to_array(字符串, 正则表达式) :按照正则表达式的规则将字符串切割成数组
regexp_matches(字符串, 正则表达式) :返回匹配模式的字符串数组,如果需要返回所有匹配的集合,则需要第三个参数' g' (g 是 global全局搜索的意思)
数字函数
abs() :求绝对值
random() :获取随机数
round() :对数字按照精度四舍五入
trunc() :数字的截取
ceil() / floor() :向上和向下取整
power() :幂运算
mod() :取余数运算
日期时间函数
sysdate :获取当前日期时间:timestamp
clock_timestamp() :获取当前日期时间:timestamp with time zone
current_timestamp :获取当前日期时间:timestamp with time zone
now() :获取当前日期时间:timestamp with time zone
statement_timestamp() :获取当前日期时间:timestamp with time zone
current_date :仅获取当前日期的年月日数据:date
current_time :仅获取当前时间的时分秒数据:time with time zone
localtime :仅获取当前时间的时分秒,无时区类型:time
localtimestamp :获取当前日期时间:timestamp
timeofday() :返回字符串格式的时间
add_months() :月份的偏移,将日期往前或者往后移动N个月
天数的偏移直接用时间日期类型加减就行
extract(year|month|day|week|dow|hour|minute|second from 时间) :对时间内容的维度进行提取
date_part() :进行时间内容的提取,等效于extract()
last_day() :查询时间所在月的最后一天日期
to_timestamp() :进行字符串到时间格式的转换
age() :以年月日为单位返回时间间隔
date_trunc() :日期时间的裁剪
这里的week的切割和oracle不一样,oracle是切到周天,而gauss是切到周一
isfinite() :测试时间是否为正常范围,正常时间返回 t,否则报错
pg_sleep() :服务器线程延迟时间设置,这个方法和python中的 time.sleep() 效果相同
next_day() :查看下一个时间周期(星期)的日期
数据类型转换函数
cast() :数据类型转换
to_char() :转换数据为字符串 / 将日期类型的数据提取出来
to_date() :将字符串转换成日期date类型
to_timestamp() :将字符串转换成时间戳timestamp类型,看起来和to_date()是一样的,但是to_date()是时间类型,to_timestamp()是个字符串。
to_number() :将其他类型转换成数字
文本检索函数
length(to_tsvector()) :返回tsvector类型词汇的单词数,tsvector类型会对单词内容进行去重,返回int整数
ts_rewrite(查询的tsquery, 查询的tsquery, 替换的tsquery) :查询重写,返回一个tsquery类型
例如下面的tsquery类型中,将apple替换成banana:
或者放在表格中,我们将小米替换成MI:
这里要注意的是,如果需要重写的规则越多,那么重写的操作就会越慢,因为ts_rewrite()要检查每一个可能匹配的规则。
JSON类型函数
array_to_json() :将一个多维数组返回成一个指定数据类型的json格式的数组
row_to_json() :将一行数据返回成一个json格式的行信息
HLL类型函数
hll_hash_any() :对任何数据类型进行哈希值的计算
hll_hashval_eq() :比较两个数据的哈希值计算结果是否一致
hll_hashval_ne() :比较两个数据的哈希值计算结果是否不一致
hll_add_agg() :将哈希之后的数据,分组放到hll中
例如对表格中的性别进行分组,根据id进行哈希计算,将计算结果分组放入到同一个性别的hll里面
hll_cardinality() :对分组之后的hll数据进行统计,统计结果会去重
sequence类型函数
nextval() :递增序列并且返回这个序列的新值
--先创建一个新的自定义序列对象
--创建一个表格,在表格的主键id上使用这个序列对象
--插入数据的时候,这个序列号便会自动的进行添加了
在序列对象里面,本身也有 nextval 这个属性可以直接使用到序列的下一个值:
currval :查看表格序列的最后一个值
setval() 重新设置当前序列对象的值
aes128加密解密函数
gs_encrypt_aes128(被加密的字符串, 密钥) :将字符串根据密钥进行aes加密,转换密码的密钥,需要8个字符以上而且包含至少三种不同的字符
gs_decrypt_aes128('加密后的密文', '密钥') :对加密的aes128进行解密操作
集合函数
generate_series(开始值, 结束值, 步长) :生成一个数字范围内的序号,一个从开始到结束的连续序号
时间日期类型也是可以的
generate_subscripts() :返回数组中某个维度的下标序号(该维度的元素个数)
系统信息函数
current_catalog / current_database() :查询当前的数据库名字
current_user :查询当前的用户名
current_schema :schema是表格的集合体,如果没有创建单独的schema,那么默认是使用的public
感兴趣的同学可以点击关注,后续还会继续更新gauss数据库的内容。
版权归原作者 周老师在此 所有, 如有侵权,请联系我们删除。