数据类型转换

阅读(9691) 标签: 数据类型转换,

本部分介绍了报表中常用数据类型转换函数的函数说明、语法、参数说明、返回值、选项以及示例。

bigint()

函数说明:

将字符型整数转换成大整数或对数值型数据取整返回大整数

该数据类型精度高,支持大于64位的整数,但是运算速度慢

如果小于64位的整数,建议用long(支持64位,即最大为264次方)或者int(支持32位,即最大为232次方)

语法:

bigint(stringExp)

bigint(numberExp)

参数说明:

stringExp

需要转换的整数串

numberExp

需要取整的数值型数据,超过64位要用decimal类型,缺省为double(64)

返回值:

大整数BigInteger

示例:

1bigint("123456789012345678901234567890") 

返回:123456789012345678901234567890

2bigint(decimal("1234567890123456789012345.67890")) 

返回:1234567890123456789012345

3bigint(12345.6789012345678901234567890) 

返回:12345

chn()

函数说明:

将一个整数转化成汉字大写

语法:

chn( intExp )

参数说明:

intExp

整数表达式

返回值:

字符型

选项:

@a

采用亿万千百十的写法,缺省采用一二三四五六七的写法。

@u 

采用壹贰叁肆伍陆柒捌玖拾佰仟的写法, 缺省采用零一二三四五六七八九十百千的写法。

示例:

1chn@a(1234567)  返回:"一百二十三万四千五百六十七"

2chn(1234567)  返回:"一二三四五六七"

3chn@au(1234567)  返回:"壹佰贰拾叁万肆仟伍佰陆拾柒"

4chn@u(1234567)  返回:"壹贰叁肆伍陆柒"

decimal()

函数说明:

将字符串或数字型数值转换成大浮点数

语法:

decimal(stringExp)

decimal(numberExp)

参数说明:

stringExp

给定数字串,可含小数点

numberExp

数值,只能少于等于64位,超过64位就要用字符串stringExp代替

返回值:

大浮点数BigDecimal

示例:

1decimal("123456789012345678901234567890") 

返回:123456789012345678901234567890

2decimal(1234567890123456) 

返回:1234567890123456BigDecimal类型)

double()

函数说明:

将字符串或数字转换成64位的双精度浮点数

语法:

double( string )

double( number )

参数说明:

string

需要转换的双精度浮点数字符串表达式, 必须是小于或等于64位数字组成的字符串。对于值超过64位,结果将不精确。

number

需要转换的双精度浮点数,必须小于或等于64位的数值。对于值超过64位,结果将不精确。

返回值:

64位的双精度浮点数

示例:

1double("1234567")  返回:1234567.0

2double(1234567)  返回:1234567.0

float()

函数说明:

将单精度浮点数、双精度浮点数、字符串转换为64位的单精度浮点型

语法:

float(string)

float(number)

参数说明:

string

需要转换的单精度浮点数、双精度浮点数表达式,必须是小于或等于64位数字组成的字符串。对于值超过64位,float(string)的结果将不精确。

number

数字,必须小于或等于64位的数值。对于值超过64位,float(number)的结果将不精确。

返回值:

64位的双精度浮点数

示例:

1float("1234567")  返回:1234567.0

2float(1234567.0)  返回:1234567.0

3float(1234567)  表达式提示错误,因为1234567不是浮点数

hexstring()

函数说明:

将数据或者byte数组转换为十六进制字符(数据当做无符号数据处理)

语法:

hexstring(dataExp)

参数说明:

dataExp

数据或者byte数组表达式

选项:

@s

数据之间用空格隔开,缺省不隔开

返回值:

字符型,十六进制字符

示例:

1hexstring@s(12345678)  返回:"00 BC 61 4E"

2hexstring(12345678)  返回:"00BC614E"

ifdate()

函数说明:

判定参数是否为日期型或日期时间类型

语法:

ifdate(exp)

参数说明:

exp

任意类型数据表达式

返回值:

布尔型

示例:

1ifdate("2006-10-10")  返回:false

2ifdate(date("2006-10-10 10:20:30"))  返回:true

3ifdate("20061010")   返回:false

4ifdate("10:20:30")  返回:false

5ifdate(date("2006-10-10"))  返回:true

ifnumber()

函数说明:

判定参数是否是数值类型

语法:

ifnumber(exp)

参数说明:

exp

任意类型数据表达式

返回值:

布尔型

示例:

1ifnumber("abc")  返回:false

2ifnumber("1234")   返回:false

3ifnumber(1234)  返回:true

4ifnumber("1234sss")  返回:false

ifstring()

函数说明:

判定参数是否是字符串类型

语法:

ifstring( Exp )

参数说明:

Exp

任意类型的数据表达式

返回值:

布尔型

示例:

1ifstring("abc")   返回:true

2ifstring(1234)  返回:false

3ifstring("1980-01-01")  返回:true

4ifstring(date("1980-01-01"))  返回:false

iftime()

函数说明:

判定参数是否为时间类型

语法:

iftime(exp)

参数说明:

exp

任意类型数据表达式

返回值:

布尔型

示例:

1iftime("2006-10-10")  返回 false

2iftime("2006-10-10 10:20:30")  返回 false

3iftime("20061010")  返回 false

4iftime("10:20:30")  返回 false

5iftime(time("10:20:30"))  返回 true

int()

函数说明:

类型转换函数,取出给定数值表达式或数值字符串中的整数部分,并把其数据类型转换成32位整数。

语法:

int(valueExp)

参数说明:

valueExp

表达式,返回结果必须为数值或数值串

返回值:

32位整数

示例:

1int("33")  返回:33

2int("33.999d")  返回:33

3int(1.5*1.5)  返回:2

4int(25.67)  返回:25

isempty()

函数说明:

判定表达式运算的结果列表中的元素个数是否为0,或者运算的结果是否为null

语法:

isempty(exp)

参数说明:

exp

表达式

返回值:

布尔型

示例:

1isdigit(A1)  返回:true,此时A1单元格为空

2isdigit(A2)  返回:false,此时A2单元格有内容

json()

函数说明:

将数据集或表达式转换成json串,此函数主要在第三方图形中用来替换宏表达式${a}中的数据。

语法:

json ('expression','Field1','Field2',...)

参数说明:

expression

需要转换成json串的数据集或表达式

Field

字段名

返回值:

json

选项:

@d

将指定的数据集转换为json,格式为:[{字段名:,字段名2:...},{字段名:2,字段名2:2...},...],其中不指定Field时,转换所有的字段,如果指定了字段,则只有指定的字段被转换。

@m

将指定的数据集当map转换为json,格式为:{字段1:字段2,字段12:字段22},其中不指定Field*时,仅转换头两个字段,如果指定了字段,且只能指定两个字段,以便解释为map keyvalue

@a

将数据集转换成二维数组的json串,缺省为所有列。当仅指定一列时,则返回的是一维数组

@s

当字符串对象已经是一个json格式串时,直接返回该串,而不再加引号来表示

@v

将表达式计算结果的值转成json串,缺省是将表达式计算结果的记录转换成json

@r

当上述选项有其一时,表示去当前格子的根集

示例:

ds1数据集:

 

A

 

1

=to(1,5)

 

2

=json(A1)

[1,2,3,4,5]

3

['a':3,'b':4,'c':4]

 

4

=json(A3)

"['a':3,'b':4,'c':4]"

5

=json@s(A3)

['a':3,'b':4,'c':4]

6

=json@d("ds1","STUDENTID")

[{"STUDENTID":"Lily"},{"STUDENTID":"Rose"},{"STUDENTID":"Petter"},{"STUDENTID
":"Sira"},{"STUDENTID":"Lucy"}]

7

=json@m("ds1","STUDENTID","SCORE")

{"Lily":84,"Sira":84,"Petter":69,"Lucy":100,"Rose":77}

8

=json@m("ds1")

{"Class two":"Lucy","Class one":"Petter"}

9

=json@a("ds1","SCORE")

[84,77,69,84,100]

10

=json@v(ds1.select(#1))

["Class one","Class one","Class one","Class two","Class two"]

long()

函数说明:

将字符串或数字转换成64位长整数

语法:

long(string)

long(number)

参数说明:

string

需要转换的字符串表达式,必须是小于或等于64位长整数组成的字符串。对于值超过64位,long (string)的结果将不精确,值中包含的小数位将被截取。

number

数字,如果带有小数,则小数部分被截掉,必须小于或等于64位的长整数。对于值超过64位,long (number)的结果将不精确。

返回值:

64位长整数

示例:

1long("1234567")   返回:1234567

2long(1234567.789)  返回:1234567

number()

函数说明:

将字符串转换成相应的32位整数、64位整数、或者64位浮点数

语法:

number(string)

参数说明:

string

需要转换的字符串表达式,值必须为数值串

返回值:

32位整数、64位整数、或者64位浮点数

示例:

1number("123")  返回:123

2number("123f")  返回:123.0

3number("123.45")   返回:123.45

4number("123.456d")  返回:123.456

rmb()

函数说明:

将浮点数(只支持小数点后两位)转换人民币大写格式

语法:

rmb( numberExp )

参数说明:

numberExp

数据值表达式

返回值:

字符型

选项:

@t

繁体中文的人民币大写格式

示例:

1rmb(10123456789.12)  返回:"壹佰零壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角贰分"

2rmb@t(10123456789.12)  返回:"壹佰零壹億貳仟三佰肆拾伍萬陸仟柒佰捌拾玖元壹角貳分"

 

sequence()

函数说明:

将数组转为序列

语法:

sequence(list)

参数说明:

list

数组

返回值:

序列

示例:

1sequence( list(1,3,5,7,9))  返回:[1,3,5,7,9]

string()

函数说明:

将对象转换成字符型,转换过程中可以进行格式化

语法:

string(expression{, format}:loc)

参数说明:

expression

需要转换成字符串的常数对象或表达式

format

对表达式expression进行格式化的格式串

loc

语言名,不区分大小写;仅对日期时间适用,缺省使用系统语言。常用语言名有zh(中文)、en(英文),其他语言请参考集算器函数A.sort()

返回值:

字符型

选项:

@q

给串expression加双引号,忽略参数format

@e

将不可显示的字符转义。对expression串中含有的tab、回车、换行等用转义符形式显示,如果串中含有单引号、双引号和转义符则加上转义符。忽略参数format

@u

在选项@e的基础上如果串expression中有大字符集,则将串expression中的大字符集转换成unicode字符。

示例:

1  string(123)

返回值:"123"

2  string(arg1,"yyyyMMdd")

其中arg1为日期型参数,值为1972-09-09,返回值:"19720909"

3  string(3456.9876,"#,##0.00")

返回值:"3,456.99"

4  string(5/6,"0.00%")

返回值:83.33%

5  string@q(A5)

其中A5内容为a bab之间用tab分隔,返回值:"a  b"。给字符串a   b加上双引号,并且显示出转义字符

6  string@e(A6)

其中A6内容为例5,返回值:\"a\tb\"转义不可显示字符tab,并且对双引号加转义符

7  string@u(A8),其中A8内容为中国,返回值:\u4E2D\u56FD

8  string(date("2009-02-23"),"MMM dd,yyyy":"en"),返回值:Feb 23,2009