本部分介绍了报表中常用数据类型转换函数的函数说明、语法、参数说明、返回值、选项以及示例。
函数说明:
将字符型整数转换成大整数或对数值型数据取整返回大整数
该数据类型精度高,支持大于64位的整数,但是运算速度慢
如果小于64位的整数,建议用long(支持64位,即最大为2的64次方)或者int(支持32位,即最大为2的32次方)
语法:
bigint(stringExp)
bigint(numberExp)
参数说明:
stringExp |
需要转换的整数串 |
numberExp |
需要取整的数值型数据,超过64位要用decimal类型,缺省为double(64位) |
返回值:
大整数BigInteger
示例:
例1:bigint("123456789012345678901234567890")
返回:123456789012345678901234567890
例2:bigint(decimal("1234567890123456789012345.67890"))
返回:1234567890123456789012345
例3:bigint(12345.6789012345678901234567890)
返回:12345
函数说明:
将一个整数转化成汉字大写
语法:
chn( intExp )
参数说明:
intExp |
整数表达式 |
返回值:
字符型
选项:
@a |
采用亿万千百十的写法,缺省采用一二三四五六七的写法。 |
@u |
采用壹贰叁肆伍陆柒捌玖拾佰仟的写法, 缺省采用零一二三四五六七八九十百千的写法。 |
示例:
例1:chn@a(1234567) 返回:"一百二十三万四千五百六十七"
例2:chn(1234567) 返回:"一二三四五六七"
例3:chn@au(1234567) 返回:"壹佰贰拾叁万肆仟伍佰陆拾柒"
例4:chn@u(1234567) 返回:"壹贰叁肆伍陆柒"
函数说明:
将字符串或数字型数值转换成大浮点数
语法:
decimal(stringExp)
decimal(numberExp)
参数说明:
stringExp |
给定数字串,可含小数点 |
numberExp |
数值,只能少于等于64位,超过64位就要用字符串stringExp代替 |
返回值:
大浮点数BigDecimal
示例:
例1:decimal("123456789012345678901234567890")
返回:123456789012345678901234567890
例2:decimal(1234567890123456)
返回:1234567890123456(BigDecimal类型)
函数说明:
将字符串或数字转换成64位的双精度浮点数
语法:
double( string )
double( number )
参数说明:
string |
需要转换的双精度浮点数字符串表达式, 必须是小于或等于64位数字组成的字符串。对于值超过64位,结果将不精确。 |
number |
需要转换的双精度浮点数,必须小于或等于64位的数值。对于值超过64位,结果将不精确。 |
返回值:
64位的双精度浮点数
示例:
例1:double("1234567") 返回:1234567.0
例2:double(1234567) 返回:1234567.0
函数说明:
将单精度浮点数、双精度浮点数、字符串转换为64位的单精度浮点型
语法:
float(string)
float(number)
参数说明:
string |
需要转换的单精度浮点数、双精度浮点数表达式,必须是小于或等于64位数字组成的字符串。对于值超过64位,float(string)的结果将不精确。 |
number |
数字,必须小于或等于64位的数值。对于值超过64位,float(number)的结果将不精确。 |
返回值:
64位的双精度浮点数
示例:
例1:float("1234567") 返回:1234567.0
例2:float(1234567.0) 返回:1234567.0
例3:float(1234567) 表达式提示错误,因为1234567不是浮点数
函数说明:
将数据或者byte数组转换为十六进制字符(数据当做无符号数据处理)
语法:
hexstring(dataExp)
参数说明:
dataExp |
数据或者byte数组表达式 |
选项:
@s |
数据之间用空格隔开,缺省不隔开 |
返回值:
字符型,十六进制字符
示例:
例1:hexstring@s(12345678) 返回:"00 BC 61 4E"
例2:hexstring(12345678) 返回:"00BC614E"
函数说明:
判定参数是否为日期型或日期时间类型
语法:
ifdate(exp)
参数说明:
exp |
任意类型数据表达式 |
返回值:
布尔型
示例:
例1:ifdate("2006-10-10") 返回:false
例2:ifdate(date("2006-10-10 10:20:30")) 返回:true
例3:ifdate("20061010") 返回:false
例4:ifdate("10:20:30") 返回:false
例5:ifdate(date("2006-10-10")) 返回:true
函数说明:
判定参数是否是数值类型
语法:
ifnumber(exp)
参数说明:
exp |
任意类型数据表达式 |
返回值:
布尔型
示例:
例1:ifnumber("abc") 返回:false
例2:ifnumber("1234") 返回:false
例3:ifnumber(1234) 返回:true
例4:ifnumber("1234sss") 返回:false
函数说明:
判定参数是否是字符串类型
语法:
ifstring( Exp )
参数说明:
Exp |
任意类型的数据表达式 |
返回值:
布尔型
示例:
例1:ifstring("abc") 返回:true
例2:ifstring(1234) 返回:false
例3:ifstring("1980-01-01") 返回:true
例4:ifstring(date("1980-01-01")) 返回:false
函数说明:
判定参数是否为时间类型
语法:
iftime(exp)
参数说明:
exp |
任意类型数据表达式 |
返回值:
布尔型
示例:
例1:iftime("2006-10-10") 返回 false
例2:iftime("2006-10-10 10:20:30") 返回 false
例3:iftime("20061010") 返回 false
例4:iftime("10:20:30") 返回 false
例5:iftime(time("10:20:30")) 返回 true
函数说明:
类型转换函数,取出给定数值表达式或数值字符串中的整数部分,并把其数据类型转换成32位整数。
语法:
int(valueExp)
参数说明:
valueExp |
表达式,返回结果必须为数值或数值串 |
返回值:
32位整数
示例:
例1:int("33") 返回:33
例2:int("33.999d") 返回:33
例3:int(1.5*1.5) 返回:2
例4:int(25.67) 返回:25
函数说明:
判定表达式运算的结果列表中的元素个数是否为0,或者运算的结果是否为null
语法:
isempty(exp)
参数说明:
exp |
表达式 |
返回值:
布尔型
示例:
例1:isdigit(A1) 返回:true,此时A1单元格为空
例2:isdigit(A2) 返回:false,此时A2单元格有内容
函数说明:
将数据集或表达式转换成json串,此函数主要在第三方图形中用来替换宏表达式${a}中的数据。
语法:
json ('expression','Field1','Field2',...)
参数说明:
expression |
需要转换成json串的数据集或表达式 |
Field |
字段名 |
返回值:
json串
选项:
@d |
将指定的数据集转换为json串,格式为:[{字段名:值,字段名2:值...},{字段名:值2,字段名2:值2...},...],其中不指定Field时,转换所有的字段,如果指定了字段,则只有指定的字段被转换。 |
@m |
将指定的数据集当map转换为json串,格式为:{字段1值:字段2值,字段1值2:字段2值2},其中不指定Field*时,仅转换头两个字段,如果指定了字段,且只能指定两个字段,以便解释为map 的key跟value |
@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"] |
函数说明:
将字符串或数字转换成64位长整数
语法:
long(string)
long(number)
参数说明:
string |
需要转换的字符串表达式,必须是小于或等于64位长整数组成的字符串。对于值超过64位,long (string)的结果将不精确,值中包含的小数位将被截取。 |
number |
数字,如果带有小数,则小数部分被截掉,必须小于或等于64位的长整数。对于值超过64位,long (number)的结果将不精确。 |
返回值:
64位长整数
示例:
例1:long("1234567") 返回:1234567
例2:long(1234567.789) 返回:1234567
函数说明:
将字符串转换成相应的32位整数、64位整数、或者64位浮点数
语法:
number(string)
参数说明:
string |
需要转换的字符串表达式,值必须为数值串 |
返回值:
32位整数、64位整数、或者64位浮点数
示例:
例1:number("123") 返回:123
例2:number("123f") 返回:123.0
例3:number("123.45") 返回:123.45
例4:number("123.456d") 返回:123.456
函数说明:
将浮点数或大实数(只支持小数点后两位)转换人民币大写格式
语法:
rmb( numberExp )
参数说明:
numberExp |
数据值表达式 |
返回值:
字符型
选项:
@t |
繁体中文的人民币大写格式 |
示例:
例1:rmb(10123456789.12) 返回:"壹佰零壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角贰分"
例2:rmb@t(10123456789.12) 返回:"壹佰零壹億貳仟三佰肆拾伍萬陸仟柒佰捌拾玖元壹角貳分"
函数说明:
将数组转为序列
语法:
sequence(list)
参数说明:
list |
数组 |
返回值:
序列
示例:
例1:sequence( list(1,3,5,7,9)) 返回:[1,3,5,7,9]
函数说明:
将对象转换成字符型,转换过程中可以进行格式化
语法:
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,"yyyy年MM月dd日")
其中arg1为日期型参数,值为1972-09-09,返回值:"1972年09月09日"
例3: string(3456.9876,"¥#,##0.00")
返回值:"¥3,456.99"
例4: string(5/6,"0.00%")
返回值:83.33%
例5: string@q(A5)
其中A5内容为a b,a和b之间用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。