?TRIM(SS) + LTRIM(SS) + ALLTRIM(SS) 结果为:” TESTTEST TEST”
?LEN(SS),LEN(TRIM(SS)),LEN(LTRIM(SS)), LEN(ALLTRIM(SS)) 结果为:8 5 7 4 (9)、计算子串出现次数函数
格式:OCCUS(<字符表达式1>, <字符表达式2>) 功能:
返回第一个字符串在第二个字符串中出现的次数,若第一个字符串不是第二个字符串的子串,则返回0。
例: STORE ‘abracadabra’ TO S
?OCCUS(‘a’, S), OCCUS(‘b’, S), OCCUS(‘c’, S), OCCUS(‘e’, S) 结果为: 5 2 1 0 (11)、字符串匹配函数(等同于==)
格式:LIKE(<字符串表达式1>,<字符串表达式2>) 功能:
比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(.T.),反之,返回逻辑假(.F.)
<字符表达式1>中可包含有通配符”*”和”?” 例:STORE “abc” TO x STORE “abcd” TO y
?LIKE(“ab”,x), LIKE(“ab*”,y), LIKE(“?b”,x), LIKE(“Abc”,x) 结果为:.F. .T. .F. .F. (大小写区分)
(12)、字符替换函数
格式: Chrtran(<字符表达式1>,<字符表达式2>,<字符表达式3>) 功能:
当第一个字符串中的一个或多个字符与第二字符串中的某个字符相匹配时,就用第三个字符串中的对应字符(即与第二个字符串位置对应)替换这些字符,若第三个字符串包含的字符个数少于第二个字符串包含的字符个数,即无对应字符,则第一个字符串中相匹配的字符被删除;反之,若多余,则多余字符被忽略.
例:X1=CHRTRAN(“ABACAD”, “ACD”, “X12”) CHRTRAN(“ABACAD”, “ACD”, “X12”)
CHRTRAN(“XBACAD”, “ACD”, “X12”) CHRTRAN(“XBXCAD”, “ACD”, “X12”) CHRTRAN(“XBX1AD”, “ACD”, “X12”) CHRTRAN(“XBX1XD”, “ACD”, “X12”) CHRTRAN(“XBX1X2”, “ACD”, “X12”)
y1=CHRTRAN(“计算机ABC”, “计算机”,”电脑”) Z1=HCRTRAN(“大家好”, “大家”, “你”) ? X1,y1,z1 结果等于多少? 3.3.3 日期函数 (1)、系统时间函数 格式:TIME ( )
功能:返回当前系统时间。时间格式为HH:MM:SS 说明:此函数返回值不是日期时间型,
****而是字符型 【例】? TIME ( ) (2)、系统日期函数 格式:DATE ( )
功能:返回当前系统日期,函数值为日期型 (3)、系统日期时间 格式:DATETIME( )
功能:返回当前系统的日期时间,函数值为日期时间型 【例】SET DATE TO YMD ? DATE ( )
‘假设当前日期为2001/2/17,那么结果为 01/02/17 (4)、年函数
格式:YEAR (<日期型|日期时间型>) 功能:输出日期型表达式的年份。
【例】? YEAR (DATE( )) ‘假设当前日期为2001/2/17,那么结果为 2001。 (5)、月函数
格式:MONTH (<日期型|日期时间型>) 功能:输出日期型表达式的月份。
【例】? MONTH (DATE( )) ‘假设当前日期为2001/2/17,那么结果为2 (6)、日函数
格式:DAY (<日期型|日期时间型>) 功能:输出日期型表达式的日。
【例】? DAY (DATE( )) ‘假设当前日期为2001/2/17,那么结果为 17 (7)、时,分,秒函数
格式:HOUR(<日期时间表达式>) MINUTE(<日期时间表达式>) SEC(<日期时间表达式>)
功能:返日期时间型表达式的当前小时,分钟和秒数
注:此三函数的参数只能为日期时间型,而不能是日期型. 3.3.4 转换函数
数据的运算要求符合数据类型一致的原则,因此,若要对不同类型的数据进行运算,那么必须通过转换函数将其转换为一致的数据类型。 (1)、数值型转换为字符型函数
格式:STR (<数值表达式>[,<长度>][,<小数位数>])
功能:将数值表达式按设定的长度和小数位数转换成字符型数据。
说明:转换后字符串的理想长度应为L,即刚好等转换后的数值所有位,包括小数点及负号在内。<长度>为转换后的字符串位数,若<长度>的设定值大于L,则转换后的字符串前补”空格”;若<长度>的设定值小于L而大于实际数值的整数部分位数,则优先满足整数部分而自动调整小数位数;若<长度>的设定值小于L又小于实际数值的整数部分位数,则返回一串星号(*) 【例】 ? STR (123.4567,6,2) ‘结果为 123.46
? STR (123.4567,9,2) ‘结果为” 123.46” ? STR (123.4567,6,3) ‘结果为 123.46 ? STR (123.4567,1,2) ‘结果为 * (2)、字符型转换为数值型函数
格式:VAL (<字符型表达式>) 功能:将数字字符串转换为数值。
说明:转换时遇到非数字字符时停止; ***若第一个字符就不是数字,则值为0.00
【例】VAL (“123.45AB”) ‘结果为123.45 VAL (“A123.45AB”) ‘结果为0.00 (3)、字符转换为ASCII函数 格式:ASC (<字符型表达式>)
功能:返回字符表达式第一个字符的ASCII码值。
【例】ASC (“abc”) ‘结果为97 (4)、ASCII码转换为字符函数 格式:CHR (<数值型表达式>)
功能:将ASCII码转化为相应的字符。 A=65 a=97 0=48
【例】CHR (65) ‘结果为A (5)、日期型或日期时间型转换为字符型
格式:DTOC (<日期型表达式日期时间型> [,1] ) TTOC(<日期时间表达式> [, 1])
功能:DTOC将日期型或日期时间型转换为字符型 功能:TTOC将日期时间型表达式转换为字符串。
说明:若使用选项[,1],则转换为年月日无分隔符的形式。 【例】? DTOC (DATE( ))
假设当前日期为2001/2/17,那么结果为02/17/01 ? DTOC (DATE( ), 1)
假设当前日期为2001/2/17,那么结果为20010217 (6)、字符型转换为日期型函数 格式:CTOD (<字符型表达式>) CTOT(<字符型表达式>)
功能:CTOD将字符型表达式转换为日期型。 CTOD将字符型表达式转换为日期时间型
说明:字符串表达式的内容必须是0-9之间的字符,否则出错 【例】? CTOD (“02/17/64”) ‘结果为02/17/64 (7)大写字母转换为小写字母函数 格式:LOWER (<字符型表达式>)
功能:将字符型表达式中的大写字母转换为小写字母。 【例】? LOWER (“AaBbCc”) ‘结果为aabbcc (8)小写字母转换为大写字母函数 格式:UPPER (<字符型表达式>)
功能:将字符型表达式中的小写字母转换为大写字母。 【例】? UPPER (“AaBbCc”) ‘结果为AABBCC 3.3.5 测试函数
1、系统对表的记录是逐个处理的,对于一个打开的表来说,在每一时刻只能处理一条记录,VFP为每一个打开的表设置一个内部使用的记录指针,指向正在被操作的记录,该记录称为当前记录.记录指针的作用是标识表的当前记录.
2、表的逻辑结构如图所示,最上面的记录是首记录,记为TOP,最下面的记录是尾记录,记为BOTTOM.
在第一个记录之前有一个文件起始标识,称为Beginning of File(BOF); 在最后一个记录的后面还有一个文件结束标志,称为End of File(EOF).使用测试函数能够得到指针的位置,刚打开表时,记录指针总是指向首记录. (1)、值域测试函数
格式:BETWEEN ( <表达式T>,<表达式L>,<表达式H>)
功能:判断<表达式T>的值是否在<表达式L>与<表达式H>之间,若在,则返回真.T.,反之返回假.F>;.若<表达式L>和<表达式H>中有任一个为NULL是, 则返回NULL. 【例】 STORE NULL TO X STORE 100 TO Y
?BETWEEN(150,Y,Y+100), BETWEEN(90,X,Y) 结果为: .T. .NULL. (2)、记录个数测试函数
格式:RECCOUNT (<工作区号> | <别名>)) 功能:测试指定表或当前表的记录个数。
说明:(1)标识了逻辑删除的记录也包括在内,即返回表文件中物理 上存在的记录个数。
(2)若指定表没有打开,则返回0 (3)、工作区测试函数
格式:SELECT (<工作区号> | <别名>) ) 功能:测试指定表或当前表所在的工作区号。 【例】 SELECT 1 USE Student SELECT 2 USE Score
? SELECT( ) ‘结果为2 (4)、数据类型测试函数
格式:VARTYPE (<表达式>[,逻辑表达式])
功能:测试表达式的数据类型,返回一个大写字母即代表数据类型的字母,具体参见课本P77表3.8。表达式若为常量,则需用定界符界定。
说明:若<表达式>为一个数组,则返回第一个数组的元素的类型;
当表达式的运算结果为NULL时,则据<逻辑表达式>的值返回表达式的值,若<逻辑表达式>为.T.,则返回表达式的原数据类型;若<逻辑表达式为.F.或缺省,则返回X以表明<表达式>的运算结果是NULL; 若<表达式>运算的结果是NULL,则返回X,表示运算结果是NULL 【例】 x =“AAA”
STORE 10 TO y STORE .NULL. TO x STORE $100.2 TO z
? VARTYPE (X), VARTYPE(X,.F.), VARTYPE(X, .T.), ? VARTYPE(y), VARTYPE(z)
结果为: X X C N Y (5)、空值(NULL)测试函数 格式:ISNULL(<表达式>)
功能:判断<表达式>的运算结果是否为NULL值,若是NULL值返 回逻辑真(.T.),反之为假(.F.) (6)、”空”值测试函数
格式:EMPTY(<表达式>)
功能:判断<表达式>的结果是否为”空值”,若是则返回逻辑具(.T.),反之返回逻辑假(.F.) NULL与”空”的区别:
NULL表示一个不确定的值,而”空”表示不同数据类型所代 (7)、条件测试函数
格式:IIF(<逻辑表达式>, <表达式1>, <表达式2>) 功能:测试<逻辑表达式>的值,若为真(.T.),函数返回<表达式1>的值,反之返回<表达式2>的值,其中表达式1与表达式2的类型可以不一样 (8)、记录删除测试函数
格式:DELETED([<别名> | <工作区号>])
功能:测试指定表或当前表的当前记录是否有删除标记”*”,若有则返回真(.T.),反之返回假(.F.)
(9)宏替换函数
格式:&<字符型变量>
功能:替换出字符型变量的内容,即&的值是变量中的字符串,如果该函数与其后的字符无明确分界,则要用”.”作函数结束标识. 例:STORE ‘职工’ TO DB USE &DB XM=“姓名”
?&XM+”你好” 结果为李小明你好 SKIP
?XM, &XM 结果姓名 李新
“&XM”==“姓名” 值为.T. 3.5.6程序设计
定义:是为完成某种任务的命令序列,这些命令序列按照一定的结构合理地、有机地组合在一起,并以文件的形式存储在磁盘上,称命令文件。
程序执行时,从磁盘上调入内存,系统按照文件中排列的顺序从第一条命令逐条执行,直到结束。 2、关于程序的几点说明
(1)注释
?代码行注释:以NOTE或*开头的注释,独立占用一行。 ?命令行注释:以&&开头的注释,紧跟本命令之后。 ?注释为非执行代码,不会影响程序的功能。
(2)SET TALK ON | OFF命令
?功能:用于设置执行某些数据命令时,是否返回相关执行的状态信息,设置为OFF时,不返回,其常用于程序设计中,防止运行程序时产生对话框打断程序执行。 1)菜单方式: [文件]|[打开]
2)命令方式: MODIFY COMMAND <程序名>
一个程序一般都包含数据输入、数据处理、数据输出等三部分。 对于输入部分VFP提供了与用户交互式互访的命令。 4.三条输入命令的异同
ACCEPT:命令只能接受字符型数据,不需定界符,输入完毕按回车键结束; WAIT:命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;
INPUT:命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束。 7.2 程序的基本结构
程序结构指程序中命令或语句执行的流程结构。典型的程序 结构有:(1)顺序;(2)选择;(3)循环三种。