`
silentlakeside
  • 浏览: 109072 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Q for Mortals2笔记 -- 原子数据类型

    博客分类:
  • kdb+
 
阅读更多

概览

参照该文里的两个表格来了解Q的数据类型。其中:

  • type:类型名称
  • size:该类型占用多少个字节
  • char type:该类型的单字符代号,可以跟在值后面表示类型,例如1b表示boolean的true
  • num type:该类型的数字代号,type命令可以用来查看一个变量的类型,以数字代号表示。数字前面带-号表示原子类型,不带-号表示是该原子类型的列表
    type 0Nj
    -7h
    type (1j;2j)
    7h 

注意KDB 3.1以后默认类型有些变化,例如原来一个数字默认是int,3.1之后默认是long

type 0Ni
-6h
type 0Nj
-7h
type 0N
-7h 

 浮点数

float类型的精度不少于15位小数,real类型的精度不少于6位小数。注意q控制台显示值的时候值显示7位精度的数字,例如

q)1.123456789
1.123457
q)1.123456789e
1.123457e 

可以通过“\P”命令更改显示精度

q)\P 16
q)1.123456789
1.123456789
q)1.123456789e
1.123456835746765e 

二进制数据

包括boolean和byte。0b是false,1b是true。byte用16进制表示,如0x2a。二进制数据可以当作数值参与计算。

文本数据

包括char和symbol。

 

char是单字符,使用\作特殊符号的转义符,例如"\"","\n"等。也支持反斜杠后跟数字表示ASCII,如"\142"表示”b"。

 

symbol以`开头。symbol与string的区别

  • string是一个char列表,而symbol是不能再拆分的原子类型,它并不是由char组成,例如我们可以取得一个string的第几个字符,而symbol则没有这种做法
    q)"abc"[0]
    "a"
    q)`abc[0]
    'abc 
当symbol包含有`或者空格时,需要使用sttring然后转换类型,例如
`$"A symbol with `backtick" 

时间数据

类型 格式(红色字符表示固定字符,非格式) 转换成数字(`int$<var>)
date yyyy.mm.dd 当年第几天,例如31
time hh:mm:ss.uuu 当天的毫秒数,例如45296789
datetime yyyy.mm.ddThh:mm:ss.uuu 当年第几天,时间折算成小数,例如31.5
month yyyy.mmm

当年第几月,注意它是以0开始,例如一月是0

minute hh:mm

分钟数,小时数会转换成分钟数,例如83

second hh:mm:ss

秒数,时分都会转换成秒数,例如45296

时间数据可以通过变量.名称的方式获取它的组成部分,例如

q)d:2014.05.27
q)d.year
2014i 

可用的名称包括:year/mm/dd/hh/mm/ss/month/minute/second。不过这种方式不适用于函数参数,如

q)fmm:{[x] x.mm}
q)fmm 2006.09.15
{[x] x.mm}
'x.mm 

可以使用类型转换

q))fmm:{[x] `mm$x}
q))fmm 2006.09.15
9i 

无穷数和非数值

0+W/w+类型名(单字符)表示该类型的无穷数,0w表示float类型而0W表示int类型(kdb 3.1之前)或者long类型(kdb 3.1以后)。任何非0数除以0会得到正或者负的无穷数(float类型)。

 

非数值用n代替w,同样的,未指明类型时,小写表示float类型,大写表示int或者long类型。0除以0会得到非数值(float类型)。

 

KDB的哲学是任何合法的数学表达式都会得到一个结果而非错误。

 

需要注意的是,kdb底层使用bit表示无穷数,所以无穷数参与计算的时候会变成正常的数值,如:

q)0Wi - 2
2147483645
q)2i*0Wi
-2i 

空值

KDB里每种类型都有自己的空值

  • 二进制数据没有专门的空值,0就是表示空值
  • 数值类型和时间类型都有自己专门的空值
  • char类型的空值是空格,""不是char型,它是char类型的空list
  • symbol类型的空值是`

尽量不使用默认类型

由于kdb的默认类型在不同版本之间会产生变化,为保证自己的程序在不同版本之间的兼容性,尽量明确定义类型。

 

分享到:
评论

相关推荐

    SQL Queries for Mere Mortals A Hands-On Guide to Data Manipulation SQL(4th) epub

    SQL Queries for Mere Mortals A Hands-On Guide to Data Manipulation in SQL(4th) 英文epub 第4版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    SQL Queries for Mere Mortals: A Hands-On Guide to Data Manipulation in SQL

    SQL Queries for Mere Mortals has earned worldwide praise as the clearest, simplest tutorial on writing effective queries with the latest SQL standards and database applications. Now, author John L. ...

    UML for Mere Mortals

    You need UML for Mere Mortals™. This easy-to-read introduction is perfect for technical professionals and business stakeholders alike: anyone who needs to create, understand, or review UML models, ...

    Database Design For Mere Mortals 英文 第二版

    - **书名**:《Database Design For Mere Mortals》(第二版) - **作者**:Michael J. Hernandez - **出版社**:Addison Wesley - **出版日期**:2003年3月5日 - **ISBN**:0-201-75284-0 - **页数**:672页 #### ...

    Database Design for Mere Mortals 3rd

    Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks.

    SQL Queries for Mere Mortals, 3rd Edition

    标题《SQL Queries for Mere Mortals, 3rd Edition》和描述《SQL Queries for Mere Mortals A Hands-On Guide to Data Manipulation in SQL, 3rd Edition truePDF无水印》表明,本书是关于SQL数据操纵的实用指南,...

    Database Design for Mere Mortals Third Edition

    Hernandez’s best-selling Database Design for Mere Mortals® has earned worldwide respect as the clearest, simplest way to learn relational database design. Now, he’s made this hands-on, software-...

    SQL.Queries.for.Mere.Mortals

    - 数据类型的选择:根据存储的数据选择合适的类型可以节省空间并提高查询性能。 ##### 2. SQL查询的基础构造 - **章节概述**:详述了如何构建有效的SQL查询语句。 - **关键知识点**: - SELECT语句的结构:包括...

    SQL Queries for Mere Mortals(3rd) epub

    SQL Queries for Mere Mortals(3rd) 英文epub 第3版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    SQL Queries For Mere Mortals(光盘资料)

    SQL_Queries_For_Mere_Mortals(SQL 凡人入们查询)的配套光盘资料,包括书中样例数据库sql脚本以及查询脚本.

    Database.Design.for.Mere.Mortals.3rd.Edition.2013.2

    Database Design for Mere Mortals 是一本关于关系数据库设计的指导手册。本书的第三版于 2013 年出版,作者是 Michael J. Hernandez。该书旨在为读者提供实践指南,指导他们设计和实现关系数据库。 数据库设计的...

    User Interface Design for Mere Mortals

    用户界面设计,比较经典的一本书!不知道以前有人上传没有!

    SQL Queries for Mere Mortals, 4th Edition epub

    The #1 Easy, Common-Sense Guide to SQL Queries—Updated with More Advanced Techniques and Solutions

    SQL Queries for Mere Mortals (3rd Edition)完整版

    首先,标题“SQL Queries for Mere Mortals (3rd Edition) 完整版”揭示了该文档是一本关于SQL查询的图书,第三版。这意味着本书相较于之前的版本,可能在内容上有所更新和扩充,以覆盖SQL领域中的一些最新发展或者...

    VSTO for Mere Mortals [part2]

    “这本书是我知道VSTO和.NET Framework后,最想得到的一本书。这本书对于那些使用VSTO的人和任何想从Office VBA转到VB.NET上来的人来说都是非常有用的。书中所讲的大量主题提供了比MSDN或其它任何地方都更深层次和以...

Global site tag (gtag.js) - Google Analytics