三、数据类型检查和转换函数

122 阅读16分钟

三、数据类型检查和转换函数

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)