全部博文(54)
分类: 数据库开发技术
2010-12-26 10:15:12
All data is ultimately built from atoms, so we begin with atoms.An atom is an irreducible value with a specific data type.
the following table collects all important information for q data type and atoms:
type | size | char type | num type | notation | null value |
boolean | 1 | b | 1 | 1b | 0b |
byte | 1 | x | 4 | 0x26 | 0x00 |
short | 2 | h | 5 | 42h | 0Nh |
int | 4 | i | 6 | 42 | 0N |
long | 8 | j | 7 | 42j | 0Nj |
real | 4 | e | 8 | 4.2e | 0Ne |
float | 8 | f | 9 | 4.2 | 0n |
char | 1 | c | 10 | "z" | " " |
symbol | * | s | 11 | ‘zaphod | ` |
month | 4 | m | 13 | 2006.07m | 0Nm |
date | 4 | d | 14 | 2006.07.21 | 0Nd |
datetime | 4 | z | 15 | 2006.07.21T09:13:39 | 0Nz |
minute | 4 | u | 17 | 23:59 | 0Nu |
second | 4 | v | 18 | 23:59:59 | 0Nv |
time | 4 | t | 19 | 09:01:02:042 | 0Nt |
enumeration | * | `u$v | |||
dictionary | 99 | `a`b`c!!10 20 30 | |||
table | 98 | ([] c1:ab`c; c2:10 20 30) |
整数类型
int型,使用4个字节保存数据。可正可负。
int => 123
short型,使用两个字节保存数据。结尾必须是h。
short=> 234h (h is compulsory)
long => -23423j (j is compulsory)
Type promotion is performed automatically in q primitive operations. However, if a specific integer type is required in a list and a narrower type is presented . then an error will be prompt.
浮点型数据
float型,存储在8个字节中。结尾可以f也是可选的。float可保存15位进度的数据。
float => pi:3.23423 or pi:1f
real型,存储在4个字节中。结尾必须以e结尾。
real => 1.23423e
另外浮点型数据,在q中还可以表示成科学表示法。例如:
f:1.23456789e-10二进制数据
在q中表示二进制数据的数据类型由boolean和byte。
boolean的写法。0或者1,结尾是b。
boolean => bit:0b
byte数据的表示,在q中是以0x开始,后面带两个16进制。
byte => by:0x2a
在q中,浮点数,整数和二进制数据都是能够参与基本数学运算的。在混合这些类型的计算表达式中,参与的元素是自动升级的。
字符
类似于sql,q也有两种方式表示字符。相当于char和varchar。
char类型
char其实就是将单个字符包含在双引号内。同时char还能包含特殊字符,包含特殊字符时,需要依靠反斜杠来输入这些变量。例如
"\n"。
char => ch:"q" or ch:"\n"
另外还可以使用8进制来表示char。如
c:"\142"
symbol类型
symbol => s1:`q
note that symbol is the smallest unit of the data, can't be reduced.
无穷值
有别于普通的数字和时间日期数值,q有特殊值来表示无限值。无限制总是大于或者小于任何正常值。无限值有正负之分。无穷值也是有数学类型的。
获取无限值的方式和数学中的运算差不多。整数除以0,得到无限大,负数除以0得到无限小。
无穷值也是可以参与整数运算的。当无穷值参与运算时,其原理是,转变成对于类型的最大bit表示,然后再进行运算。例如
0W-2
2147483645
Null值
null值在sql语言中,表示缺少值。missing value。但是在q中随着类型的不同而有不同意义:
char: 表示空字符
数学:表示missing value
二进制:表示值0