其实官方文档已经有这些东西了,如下:
 
不过官网的某些编排确实有点反人类的意味,比如为了拼接一个字符串,我硬是找了老半天最终才找到,所以还是稍微整理一下。
 
数据类型:
1、数字类型
类型
长度(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
 
2、布尔型
Boolean type就没什么可说的了,用一个byte表示真假
 
3、时间类型
Phoenix中时间类型跟数字型没什么区别,就是显示方面的问题,因此,它也有取反的问题(虽然时间戳其实没什么负数的,不知道为什么这么设计)。
因此,它也有unsinged版本,如下:
类型
长度(byte)
精度
time
8
毫秒
date
8
毫秒
timestamp
12
纳秒
unsigned_time
8
毫秒
unsigned_date
8
毫秒
unsigned_timestamp
12
纳秒
4、字符串与二进制类型
类型
长度
备注
varchar
可变
 
char(len)
len
 
binary(len)
len
 
varbinary
可变
 

对于可变长度的字符串,如果组成rowkey,是用\0分隔开的,然而,如果同时有数字或者时间类型的在其中,那么可能会产生歧义,这时候,建表的时候就会报错

 
5、集合类型
当前只支持array
 
 
函数和操作符:
1、数字类型
实际上,时间类型也是数字类型,但由于他们有一些特殊性,单独列出。
操作符或函数
描述
举例
+ - * / %
基本操作符
 
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  
常用数学函数
 
 
 
2、时间类型
操作符或函数
描述
举例
+  
以天为单位进行加一个数字类型
 
-
以天为单位,如果参数是数字类型,结果就是时间类型;如果参数是事件类型,结果就是数字类型
 
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
求时差
 
3、字符串函数
upper
大写
 
lower
小写
 
reverse
反置
 
lpad
改变长度,用特殊字符填充,默认是空格
lpad('a', 30)
trim    ltrim  rtrim
去掉两边(或者单边)的空格
 
regexp_replace
替换字符串
 
 
 
 
||
字符串拼装
 
substr   instr  length   regexp_substr
常用字符串函数
 
 
 
 
to_char
将数字或者时间类型转换成字符串
 
encode
将数字按照格式转换成字符串

ENCODE(myNumber, 'BASE62')

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

4、数组函数

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)

5、其他

md5    invert
 
转载自:http://blog.csdn.net/u014353787/article/details/50396823

Phoenix的数据类型和操作符、函数的更多相关文章

  1. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

  2. GO语言系列(二)- 基本数据类型和操作符

    一.文件名 & 关键字 & 标识符 1.所有go源码以.go结尾 2.标识符以字母或下划线开头,大小写敏感 3._是特殊标识符,用来忽略结果 4.保留关键字 二.Go程序的基本结构 p ...

  3. go 从入门到精通(二)基本数据类型和操作符

    一.文件名&关键字&标识符 所有go源码都是以.go结尾 标识符以字母或下划线开头,大小写敏感 下划线_是特殊标识符,用户忽略结果 保留关键字 导入包时可以设置别名 下面是保留关键字: ...

  4. golang基础之二-基本数据类型和操作符

    文件名&关键字&标识符 所有go源码都是以.go结尾 标识符以字母或下划线开头,大小写敏感 下划线_是特殊标识符,用户忽略结果 保留关键字 导入包时可以设置别名 下面是保留关键字: b ...

  5. golang(2):基本数据类型和操作符

    1). 文件名 & 关键字 & 标识符 . 所有go源码都以 .go 结尾 . 标识符以字母或下划线开头,大小写敏感 . _ 是特殊标识符,用来忽略结果 . 保留关键字 golang  ...

  6. go 数据类型和操作符

    文件名&关键字&标识符 1. 所有go源码以 .go结尾 2. 标识符以字母或者下划线开头,大小写敏感:add, Add, _add _是特殊标识符,用来忽略结果 3. 保留关键字 G ...

  7. VC6.0中重载操作符函数无法访问类的私有成员

    整理日: 2015年03月18日 在 C++ 中,操作符(运算符)可以被重载以改写其实际操作.同时我们可以定义一个函数为类的朋友函数(friend function)以便使得这个函数能够访问类的私有成 ...

  8. javascript高级编程3第三章:基本概念 本章内容 语法 数据类型 流控制语句 函数

    3.1 语法 ECMAScript的语法大量借鉴了C及其他类C语言的语法. 3.1.1 区分大小写 3.1.2 标识符 所谓标识符,就是值变量.函数.属性的名字,或者函数的参数.标识符可以是按照下列格 ...

  9. swift 学习(一)基础知识 (基本数据类型,操作符,流控制,集合)

    xcode 中调用API帮助 1.查看简单信息,选中后 按键 control +左键单击  或者按 右侧属性栏 里的帮助按钮 2.完整API,选中后 按键 control +左键双击 3.查看类.函数 ...

随机推荐

  1. Python mongoHelper模块

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' Defines a MongoOperator class and allows you to m ...

  2. 使用mocha测试

    学习了MOCHA官网的示例,将学习成果记录一下.[原文+例子:使用mocha测试] mocha是什么 Mocha是一个跑在node和浏览器上的javascript测试框架,让异步测试变得简单有趣, 并 ...

  3. html5-video视频播放

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  4. linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top

    转载:http://www.cnblogs.com/xianghang123/archive/2011/08/25/2153591.html 衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运 ...

  5. cscope无法索引代码树之外的软链接

    http://blog.csdn.net/sudolee/article/details/9052291 背景:为什么非要使用cscope?不用ctags? 尽管ctags可以索引软链接,但是,cta ...

  6. UNIX网络编程读书笔记:TCP输出、UDP输出和SCTP输出

    TCP输出 下图展示了应用进程写数据到TCP套接口的过程. 每一个TCP套接口有一个发送缓冲区,我们可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小. 当应用进程调用write时,内核从应用进 ...

  7. Unity Editor类常用方法

    http://www.cnblogs.com/zhaoqingqing/p/3944718.html 一些比较常用的Editor功能我在之前的博客中也有提到过所以就不详细写啦,今天参考了一下 麒麟子( ...

  8. 10分钟学会搭建Android开发环境 Eclipse: The import android.support cannot be resolved

    10分钟学会搭建Android开发环境_隋雨辰 http://v.youku.com/v_show/id_XNTE2OTI5Njg0.html?from=s1.8-1-1.2 The import a ...

  9. dubbox rest协议jackson 反序列化的坑

    dubbox 相对于dubbo 对了 rest 协议的支持  而且默认序列化的协议 是json dubbox 内部是通过 RestEasy 处理 rpc 服务 而 RestEasy获取序列化是 是通过 ...

  10. ORM,ORM的原理及测试案例

      提纲 一.什么是ORM.二.反射以及Attribute在ORM中的应用.三.创建一个数据库表和表对应的实体model.四.实体model如何映射出数据库表.五.组合ORM映射生成insert语句. ...