Phoenix的数据类型和操做符、函数

其实官方文档已经有这些东西了,以下:
 
不过官网的某些编排确实有点反人类的意味,好比为了拼接一个字符串,我硬是找了老半天最终才找到,因此仍是稍微整理一下。
 
数据类型:
一、数字类型
类型
长度(byte)
备注
integer
4
 
bigint
8
 
tinyint
1
 
smaillint
2
 
float
4
 
double
8
 
以上这些类型在hbase里面的存储跟咱们想象的不同,它是首位取反的。
举个例子,有一个tinyint的56,正常的二进制表示为00111000,然而在这里表示为10111000,这样,就保证了在hbase中,这些数做为rowkey的时候,负数在正数前面,以保证rowkey有序。
 
若是想使用正常版本的数字(毕竟有时候须要直接从hbase操做),可使用它们的unsigned版本,以下:
类型
长度(byte)
备注
unsigned_int
4
 
unsigned_long
8
 
unsigned_tinyint
1
 
unsigned_smallint
2
 
unsigned_float
4
 
unsigned_double
8
 
而后还有一个decimal type,对应于java.math.BigDecimal,能够查看java的api获取详细的描述
decimal(precision,scale)
scale
 
二、布尔型
Boolean type就没什么可说的了,用一个byte表示真假
 
三、时间类型
Phoenix中时间类型跟数字型没什么区别,就是显示方面的问题,所以,它也有取反的问题(虽然时间戳其实没什么负数的,不知道为何这么设计)。
所以,它也有unsinged版本,以下:
类型
长度(byte)
精度
time
8
毫秒
date
8
毫秒
timestamp
12
纳秒
unsigned_time
8
毫秒
unsigned_date
8
毫秒
unsigned_timestamp
12
纳秒
四、字符串与二进制类型
类型
长度
备注
varchar
可变
 
char(len)
len
 
binary(len)
len
 
varbinary
可变
 
对于可变长度的字符串,若是组成rowkey,是用\0分隔开的,然而,若是同时有数字或者时间类型的在其中,那么可能会产生歧义,这时候,建表的时候就会报错
 
五、集合类型
当前只支持array
 
 
函数和操做符:
一、数字类型
实际上,时间类型也是数字类型,但因为他们有一些特殊性,单独列出。
操做符或函数
描述
举例
+ - * / %
基本操做符
 
round
保留小数,原则是最接近,能够视为四舍五入
round(2.34,1)   =    2.3
ceil
保留小数,进一法
round(3.14,0)   =    4
floor
保留小数,去尾法
floor(3.14, 0)    =     3
trunc
和floor同样
 
 
 
 
to_number
将字符串或者时间类型转换为数字,使用java.text.DecimalFormat规定的类型
 
rand
随机数
 
sign  abs   sqrt  cbrt   exp power   ln   log  
经常使用数学函数
 
 
 
二、时间类型
操做符或函数
描述
举例
+  
以天为单位进行加一个数字类型
 
-
以天为单位,若是参数是数字类型,结果就是时间类型;若是参数是事件类型,结果就是数字类型
 
to_date
从字符串输入时间
 
round
保留必定的精确度,保留最接近的
round(to_date('2015-05-01 12:30:06'),'YEAR')     = 
2015-05-02 00:00:00.000
ceil
保留精确度到下一个单位
ceil(to_date('2015-05-01 12:30:06'),'YEAR')     = 
2015-05-02 00:00:00.000
floor
保留精确度到上一个单位
floor(to_date('2015-05-01 12:30:06'),'YEAR')     = 
2015-05-01 00:00:00.000
trunc
和floor同样
 
current_date  current_time   now
当前时间
 
year  month  week   dayofmonth  hour  minute  second 
求时间的一部分
 
convert_tz
转换时区
 
timezone_offset
求时差
 
三、字符串函数
upper
大写
 
lower
小写
 
reverse
反置
 
lpad
改变长度,用特殊字符填充,默认是空格
lpad('a', 30)
trim    ltrim  rtrim
去掉两边(或者单边)的空格
 
regexp_replace
替换字符串
 
 
 
 
||
字符串拼装
 
substr   instr  length   regexp_substr
经常使用字符串函数
 
 
 
 
to_char
将数字或者时间类型转换成字符串
 
encode
将数字按照格式转换成字符串

ENCODE(myNumber, 'BASE62')html

decode
将字符串按照格式转化为数字
DECODE('000000008512af277ffffff8', 'HEX')

四、数组函数
array_elem   array_length       array_append     array_prepend    array_cat    array_fill    array_to_string
这些看名字就知道怎么用了。
any
测试是否存在知足条件的值
1 = Any(my_array)
all
测试是否都知足某个条件
1 = ALL(my_array)

五、其余
md5    invert
 
转载自:http://blog.csdn.net/u014353787/article/details/50396823
相关文章
相关标签/搜索