三、数据类型检查和转换函数
1、Asc()
功 能:得到字符串第一个字符的ASCII码整数值。
语 法:Asc ( string )
参 数:string:要得到第一个字符ASCII值的字符串。
返回值:Integer。函数执行成功时返回string参数第一个字符的ASCII值,如果string参数的值为NULL,则Asc()函数返回NULL。
示 例:下面的语句返回66,即字母B的ASCII值。
Asc(B)
下面的代码检查字符串ls_name的第一个字母是否是大写字母。
IF Asc(ls_name) > 64 and Asc(ls_name) < 91 THEN …
2、Char()
功 能:将字符串的第一个字符、Blob变量的第一个值、或一个整数转换成字符。
语 法:Char ( n )
参 数:n:字符串、Blob变量或整数,也可以是包含上述类型数据的Any类型变量。
返回值:Char。返回参数n的第一个字符。如果n参数的值为NULL,则Char()函数返回NULL。
示 例:下面的代码ls_S的值设置为星号(*),对应于ASCII值42。
String ls_S
ls_S = Char(42)
3、Dec()
功 能:将字符串或Blob值转换成Decimal类型的值。
语 法:Dec ( stringorblob )
参 数:stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为
Decimal类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量。
返回值:Decimal。函数执行成功时返回相应的Decimal类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Dec()函数返回0。如果stringorblob参数的值为NULL,则Dec()函数返回NULL。
示 例:Dec(“24.3”)
4、Double()
功 能:将字符串或Blob值转换成Double类型的值。
语 法:Double(stringorblob)
参 数:stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为
Double类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量。
返回值:Double。函数执行成功时返回相应的Double类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Double()函数返回0。如果stringorblob参数的值为NULL,则Double()函数返回NULL。
示 例:Double(“24.332”)
5、Integer()
功 能:将字符串或Blob值转换成Integer类型的值。
语 法:Integer ( stringorblob )
参 数:stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为
Integer类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量。
返回值:Integer。函数执行成功时返回相应的Integer类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Integer()函数返回0。如果stringorblob参数的值为NULL,则Integer()函数返回NULL。
示 例:下面的语句以Integer数据类型返回24。
Integer(“24.332”)
6、Long()
功 能:将其它类型的数据转换为Long类型的值。该函数有两种语法格式:
语法一、将两个无符号整数组合成一个长整数值;
语法二、将字符串或Blob值转换成Long类型的值。下面分别予以介绍:
语法一 、将两个无符号整数组合成一个长整数值
语 法:Long ( lowword, highword )
参 数:lowword:UnsignedInteger类型,指定长整数中的低位值。
highword:UnsignedInteger类型,指定长整数中的高位值。
返回值:Long。函数执行成功时返回由低位值和高位值组合后的长整数值,发生错误时返回-1。如果任何参数的值为NULL,则Long()函数返回NULL。
语法二、将字符串或Blob值转换成Long类型的值
语 法:Long ( stringorblob )
参 数:stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为Long类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量。
返回值:Long。函数执行成功时返回相应的Long类型值。如果stringorblob参数中的值不是有效的
PowerScript数字或数据类型不兼容,那么Long()函数返回0。如果stringorblob参数的值为NULL,则Long()函数返回NULL。
示 例:下面的语句以Long数据类型返回23458888。
Long(“23458888”)
7、Real()
功 能:将字符串或Blob值转换成Real类型的值。
语 法:Real ( stringorblob )
参 数:stringorblob:string类型变量或Blob类型变量。当该参数是Blob类型变量时,把该变量第一个值转换为Real类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量。
返回值:Real。函数执行成功时返回相应的Real类型值。如果stringorblob参数中的值不是有效的
PowerScript数字或数据类型不兼容,那么Real()函数返回0。如果stringorblob参数的值为NULL,则Real()函数返回NULL。
示 例:下面的语句以Long数据类型返回2323.3222。
Real(“2323.3222”)
8、Date()
功 能:将其它类型的数据转换为Date类型的数据。该函数有三种语法格式:
语法一、将DateTime类型或第一个值是DateTime或Date的Blob值转换成Date类型的值;
语法二、将其值是个有效日期的字符串转换成Date类型的值;
语法三、将三个整数组合成一个日期。下面分别予以介绍:
语法一、将DateTime类型或第一个值是DateTime或Date的Blob值转换成Date类型的值
语 法:Date ( datetime )
参 数:datetime:DateTime类型的值或第一个值是DateTime或Date的Blob类型的值。当该参数是Blob类型变量时,把该变量第一个值转换为Date类型的值,其余部分被忽略。datetime参数也可以是包含上述类型数据的Any类型变量。
返回值:Date。函数执行成功时返回相应的Date类型值。如果datetime参数中的值不是有效的PowerScript日期或数据类型不兼容,那么Date()函数返回1900-01-01。如果datetime参数的值为NULL,则Date()函数返回NULL。
示 例:下面的语句从DateTime类型变量ldt_StartDateTime中提取日期值并保存在ld_StartDate变量中。
Date ld_StartDate
ld_StartDate = Date(ldt_StartDateTime)
语法二、将其值是个有效日期的字符串转换成Date类型的值
语 法:Date ( string )
参 数:string:string类型,其值包括一个有效的以字符串形式表示的日期(比如January 1, 1998或12-31-99),string参数也可以是包含字符串类型数据的Any类型变量。
返回值:Date。函数执行成功时返回相应的Date类型值。如果string参数中的值不是有效的PowerScript日期或数据类型不兼容,那么Date()函数返回1900-01-01。如果string参数的值为NULL,则Date()函数返回NULL。
示 例:下面的语句把字符串形式表示的日期转换为日期类型的日期。
Date ld_date
ld_date = Date(“2004-02-04”)
语法三、将三个表示年、月、日的整数组合成一个日期
语 法:Date ( year, month, day )
参 数:year:integer类型,指定日期中的年份,用四位数字表示,从0到9999;
month:integer类型,指定日期中的月份,用一位或两位数字表示,从1到12;
day:integer类型,指定日期中的号数,用一位或两位数字表示,从1到31。
返回值:Date。函数执行成功时返回由year、month、day三个参数确定的日期。如果这三个参数中任何一个参数使用了无效值(比如月份指定为14),则Date()函数返回1900-01-01。如果任何参数的值为NULL,则Date()函数返回NULL。
示 例:下面的语句把变量ld_my_date设置为2004-02-04。
Date ld_my_date
ld_my_date = Date(“2004-02-04”)
9、DateTime()
功 能:将其它类型的数据转换为DateTime类型的数据。该函数有两种语法格式:语法一、把日期和时间值组合成DateTime类型的值;语法二、将Blob类型的值转换成DateTime类型的值。下面分别予以介绍:
语法一、把日期和时间值组合成DateTime类型的值
语 法:DateTime ( date {, time } )
参 数:date:Date类型的日期值。
time:可选参数,Time类型的时间值,省略该参数时,PowerBuilder把时间设置为午夜(00:00:00.000000)。当指定该参数时,可以仅仅指定小时值。
返回值:DateTime。函数执行成功时返回日期和时间组合而成的DateTime类型的值。如果任何参数的值为
NULL,则DateTime()函数返回NULL。
示 例:下面的语句把单行编辑框中用户输入的日期和时间组合成DateTime类型的值,以更新数据库的
DateTime类型的列。
DateTime ldt_OrderDateTime
Date ld_OrderTime
Time lt_OrderTime
ld_OrderTime = Date(sle_orderdate.text)
lt_OrderTime = Time(sle_orderdate.text)
ldt_OrderDateTime = DateTime(ld_OrderTime , lt_OrderTime)
语法二、将Blob类型的值转换成DateTime类型的值
语 法:DateTime ( blob )
参 数:blob:Blob类型变量,把该变量第一个值转换为DateTime类型的值,其余部分被忽略。blob参数也可以是包含blob类型数据的Any类型变量。
返回值:DateTime。函数执行成功时返回相应的DateTime类型值。如果blob参数的值为NULL,则DateTime()函数返回NULL。
10、IsDate()
功 能:检测指定的字符串是否包含有效的日期。
语 法:IsDate ( datevalue )
参 数:datevalue:string类型,指定要检测的字符串。
返回值:Boolean。如果datevalue包含了有效的日期,则IsDate()函数返回TRUE,否则返回FALSE。如果datevalue参数的值为NULL,则IsDate()函数返回NULL。
示 例:下面的语句返回TRUE。
IsDate(“Feb 4,2004”)
下面的语句返回FALSE。
IsDate(“Feb 43,2004”)
11、IsNull()
功 能:测试变量或表达式的值是否是NULL。
语 法:IsNull ( any )
参 数:any:要测试的变量或表达式。
返回值:Boolean:如果any的值为NULL,函数返回TRUE,否则函数返回FALSE。
示 例:下面的语句执行后,lb_test的值为TURE。
Integer a , b
Boolean lb_test
SetNull(b)
lb_test = IsNull(a + b)
12、IsNumber()
功 能:测试字符串是否是有效的数值。
语 法:IsNumber ( string )
参 数:string:string类型,要测试的字符串。
返回值:Boolean:如果string的值为有效的PowerScript数字,函数返回TRUE,否则函数返回FALSE。如果string参数的值为NULL,则IsNumber()函数返回NULL。
示 例:1、下面的语句返回TRUE。
IsNumber(“11.22”)
下面的语句返回FALSE。
IsNumber(“A4545”)
2、如果单行编辑框sle_Age中的数据为32,则下面的语句把32保存在整型变量li_YearsOld中。
Integer = li_YearsOld
IF IsNumber(sle_Age.Text) THEN
li_YearsOld = integer(sle_Age.Text)
END IF
13、IsTime()
功 能:测试字符串的值是否是有效的时间。
语 法:IsTime ( timevalue )
参 数:timevalue:string类型,要测试的字符串。
返回值:Boolean:如果timevalue的值为有效的时间,函数返回TRUE,否则函数返回FALSE。如果timevalue 参数的值为NULL,则IsTime()函数返回NULL。
示 例:下面的语句返回TRUE。
IsTime(“8:00:00 am”)
下面的语句返回FALSE。
IsTime(“25:00”)
14、String()
功 能:按指定格式将数据转换成字符串。String()可以把Date、DateTime、数值类型、Time、String类型的数据转换成指定格式的字符串。
语 法:String(data,{format})
参 数:data:指定要转换格式的数据,其数据类型可以是Date、DateTime、数值类型、Time、String,也可以是包含上述类型数据的Any类型变量。
format:可选项,string类型,其值指定数据格式。如果data参数的类型为string,则必须指定format参数。
返回值:String。函数执行成功时返回以字符串方式表示的指定数据,如果data参数的数据类型与format参数指定的格式不匹配、format参数指定的格式无效、或data参数不是前面提到的适宜数据类型时,String()函数返回空字符串("")。
用 法:format是个用掩码表示的字符串,对data参数为数值类型的情况来说,格式为:
正数格式;负数格式;零的显示格式;
空的显示格式除第一部分必须提供外,其它部分可以省略。数值型显示格式中使用两个掩码字符:#和0,其中,使用#代表0~9之间的任意数字,0代表每个零都要显示。另外,货币符号($或¥)、百分号(%)、小数点(.)、逗号(,)等字符也可以出现在格式字符串中,但是,除小数点(.)、逗号(,)能够出现在格式字符#和0之间外,其它字符只能放置在格式串的前面或后面,例如,###,###$###是个错误的格式串,¥###,###,###是个正确的格式串。省略format参数时,String()函数使用PowerBuilder缺省格式。注意,如果显示格式有多个部分,各部分之间的分号(;)不能省略。其它字符也可以出现在显示格式字符串中(只能放在格式串的开头和末尾),但它们没有特殊意义,系统只是照原样显示。例如,用显示格式字符串“收入##”格式化数值12时,显示结果为“收入12”。
对data参数为字符串(String)类型的情况来说,format参数的语法格式为:
正常字符串格式;空值时格式
在“正常字符串格式”中,@代表字符串中的任意字符,除此之外的任何字符照原样显示,例如,如果定义了下面的格式:
(@@)@@@@-@@@@
则字符串0166767593显示为:
(01)6676-7593
对data参数为日期(Date)类型的情况来说,format参数的语法格式为:
正常日期格式;日期为空值时的格式
日期格式中格式字符意义如下:
d -- 开头不带0的日数(如8)
dd -- 开头带0的日数(如08)
ddd -- 星期的英文缩写(如Mon、Tue)
dddd -- 星期的英文全称(如Monday、Tuesday)
m -- 开头不带0的月份(如8)
mm -- 开头带0的月份(如08)
mmm -- 月份的英文缩写(如Jan、Feb)
mmmm -- 月份的英文全称(如January、February)
yy -- 两位数字表示的年份(如97)
yyyy -- 四位数字表示的年份(如1997)
另外,还可以使用下面的关键字作为日期的显示格式:
[General] Windows系统中定义的短日期格式
[LongDate] Windows系统中定义的长日期格式
[ShortDate] Windows系统中定义的短日期格式
对data参数为时间(Time)类型的情况来说,语法格式为:
正常时间格式;时间为空值时的格式
时间格式中格式字符意义如下:
h -- 开头不带0的小时(比如6)
hh -- 开头带0的小时(比如06)
m -- 开头不带0的分钟(比如6)
mm -- 开头带0的分钟(比如06)
s -- 开头不带0的秒(比如6)
ss -- 开头带0的秒(比如06)
f -- 开头不带0的微秒,可以指定1~6个f,每个f代表一部分微秒
AM/PM -- 用AM/PM显示上、下午时间,12小时制
am/pm -- 用am/pm显示上、下午时间,12小时制
A/P -- 用A/P显示上、下午时间,12小时制
a/p -- 用a/p显示上、下午时间,12小时制
另外,显示格式中还可以使用关键字[Time],它表示按当前Windows系统定义的格式显示时间。
对data参数为日期时间(DateTime)类型的情况来说,语法格式为:
正常日期时间格式;日期时间为空值时的格式
日期时间类型使用的掩码就是把日期掩码和时间掩码结合起来即可。
示 例:1、下面的语句将指定日期转换为: Jan 1,1998的格式:
string(1998-01-31,”mmmm dd,yyyy”)
2、下面的语句把DateTime类型的值转换为:Jan 1,1998 6 hrs and 8 min的字符串:
string(DateTime(1998-01-31,06:08:00),’mmmm dd,yyyy h “hrs and” m ”min”’)
3、下面的语句把string1设置为0123:
integer nbr = 123
string string1
string1 = string(nbr,”0000;(000);****;空”)
4、下面的语句把string1设置为123:
integer nbr = -123
string string1
string1 = string(nbr,”000;(000);****;空”)
5、下面的语句把string1设置为****:
integer nbr = 0
string string1
string1 = string(nbr,”0000;(000);****;空”)
6、下面的语句把string1设置为空:
integer nbr
string string1
SetNull(nbr)
string1 = string(nbr,”0000;(000);****;空”)
15、Time()
功 能:把其它类型的数据转换为Time类型的值。该函数有三种语法格式:语法一、将DateTime类型或第一个值是DateTime或Time的Blob值转换成Time类型的值;语法二、将其值是个有效时间的字符串转换成Time类型的值;语法三、将表示时、分、秒、以及微秒的整数组合成一个时间值。下面分别予以介绍:
语法一、将DateTime类型或第一个值是DateTime或Time的Blob值转换成Time类型的值
语 法:Time ( datetime )
参 数:datetime:DateTime类型的值或第一个值是DateTime或Time的Blob类型的值。当该参数是Blob类型变量时,把该变量第一个值转换为Time类型的值,其余部分被忽略。datetime参数也可以是包含上述类型数据的Any类型变量。
返回值:Time。函数执行成功时返回相应的Time类型值。如果datetime参数中的值不是有效的PowerScript时间或数据类型不兼容,那么Time()函数返回00:00:00.000000。如果datetime参数的值为NULL,则Time()函数返回NULL。
示 例:下面的语句从DateTime类型变量ldt_StartDateTime中提取时间并保存在lt_StartTime中。
Time lt_StartTime
lt_StartTime = Time(ldt_StartDateTime)
语法二、将其值是个有效时间的字符串转换成Time类型的值
语 法:Time ( string )
参 数:string:string类型,其值包括一个有效的以字符串形式表示的时间(比如9am或10:25),string参数也可以是包含时间类型数据的Any类型变量。
返回值:Time。函数执行成功时返回相应的Time类型值。如果string参数中的值不是有效的PowerScript时间或数据类型不兼容,那么Time()函数返回00:00:00.000000。如果string参数的值为NULL,则Time()函数返回NULL。
示 例:下面的代码把字符串形式表示的时间转换为Time类型的时间。
Time(“23:45:23”)
语法三、将表示时、分、秒、以及微秒的整数组合成一个时间值
语 法:Time ( hour, minute, second {, microsecond } )
参 数:hour:integer类型,指定时间中的小时,从0到23;
minute:integer类型,指定时间中的分钟,从0到59;
second:integer类型,指定时间中的秒,从0到59;
microsecond:integer类型,可选项,指定时间中的微秒,从0到32767。
返回值:Time。函数执行成功时返回由hour、minute、second、microsecond 四个参数确定的时间。如果这四个参数中任何一个参数使用了无效值(比如小时指定为44),则Time()函数返回NULL。
示 例:下面的语句把What_Time变量设置为:“23:45:23”。
Time What_Time
What_Time = Time(23,45,23)