资源描述
第 3 章 数据、函数与体现式
数据是计算机程序处理对象,也是运算产生成果,因此咱们首先应当认识VFP能处理哪些数据,掌握多种形式数据体现措施。可以从不一样角度对数据进行分类。
从数据类型来分,数据可以分为数值型数据、字符型数据、逻辑型数据等。
从数据存处方式来分,数据可分为常量和变量。
3·1 Visual Foxpro常用数据类型 P37 表3-1
3·2 常量与变量
在程序运行过程中,咱们把需要处理数据存储在内存中,称一直保持不变数据为“常量”,称存储可变数据存储单元为“变量”,其中数据称为变量值。
一、常量是一种详细数据项,在整个操作过程中其值保持不变。VFP支持如下6种类型常量。
1·数值型常量
2·货币型常量
前置符号 ($),采用4位小数。
3·字符型常量
单引号、双引号或方括号称为定界符。
4·日期型常量
定界符是一对花括号。
1) 老式日期格式{mm-dd-yy}
2)严格日期格式
{^yyyy-mm-dd}
设置不一样日期格式
1)在命令窗口键入如下4条命令,并分别回车执行:
SET CENTURY ON &&设置4位数字年份
SET MARK TO &&恢复系统默认斜杠日期分派符
SET DATE TO YMD &&设置年月日格式
?{^-11-26}
2)在命令窗口键入如下4条命令,并分别回车执行:
SET CENTURY OFF && 设置2位数字年份
SET MARK TO "." &&设置日期分隔符为西文句号
SET DATE TO MDY &&设置月日年格式格式
?{^-11-26}
5·日期时间型常量
在命令窗口键入如下2条命令,并分别回车执行:
SET HOURS TO 24
?{^-11-26 8:30:00P}
6·逻辑型常量
只有“真”和“假”两种值,通常用.T.体现逻辑真,用.F.体现逻辑假。注意T和F两边圆点不可少,否则会出错。
二、变量
1·字段变量
2·简朴内存变量(系统内存变量)
3·数组变量
定义:DIMENSION <数组名> (<下标上限1> [,<下标上限2>]) [,……]
DECLARE <数组名> (<下标上限1> [,<下标上限2>]) [,…¨刀
例 DIMENSION a(3),b(2,3)
此例定义了一种一维数组a,并且有3个元素,分别为a(1),a(2),a(3);
数组b为二维数组,分别是b(1,1),b(1,2),b(1,3),b(2,1),b(2,2),b(2,3)。数组一旦被定义后没个元素初值为逻辑假,可以使用赋值命令给不一样元素赋不一样数据类型值。
三、内存变量常用命令
内存命名规则:以字母(可以用中文做变量名,但不倡导)开头,只能由字母、数字、或下划线构成。
1·内存变量赋值
格式l:STORE 〈体现式〉 TO 〈变量名表〉
格式2:〈内存变量名〉=〈体现式〉
2·体现式值显示
格式1:?[〈体现式表〉]
格式2:??〈体现式表〉
第1条命令把成果在下一行最左边位置输出;第2条则将成果在光标目前位置输出。
3·内存变量显示
格式l:LIST MEMORY [LIKE <通配符>] [TO PRINTER / TO FILE<文献名>]
格式2:DISPLAY MEMORY [LIKE <通配符>] [TO PRINTER / TO FILE<文献名>]
通配符当中“?”代表内存变量中任意一种字符。“*”代表内存变量中任意一种或多种字符。
4·内存变量删除
格式1:CLEAR MEMORY
格式2:RELEASE 〈内存变量名表〉
格式4:RELEASE ALL [LIKE〈通配符〉]
例: 在命令窗口中依次输入下列命令,命令格式及屏幕显示如下:
CLEAR MEMORY
DIMENSION y(2,2)
STORE ‘xxx’TO x1,y(1,1)
y(3) = {^-11-23}
x2 = $123.23
DISPLAY MEMO LIKE y*
RELEASE ALL LIKE y*
X = {^-11-23,11:30 p}
DISPLAY MEMO LIKE X
RELEASE X
3·3 常用函数
函数是用程序来实现一种数据运算或转换。每一种函数均有特定数据运算或转换功能,它往往需要若干个自变量,即运算对象,但只能有一种运算成果,称为函数值或返回值。VFP中函数有两种,顾客自定义函数和系统函数。
函数可用函数名加一对圆括号加以调用,自变量放在圆括号里,如LEN(x)。 函数调用可以出目前体现式里,体现式将函数返回值作为自己运算对象。
一、数值函数 P45 表3-2
数值函数是指函数值为数值一类函数,它们自变量和返回值往往都是数值型数据。
1·绝对值和符号函数
ABS(<数值体现式>) 返回指定数值体现式绝对值
SIGN(<数值体现式>) 返回指定数值体现式符号。当体现式运算成果为正、负和零时,函数值分别为1、-1和0。
例: STORE 10 TO X
?ABS(5-X),ABS(X-5),SIGN(5-X),SIGN(X-10)
2·求平方根函数
SQRT(<数值体现式>) 返回指定体现式平方根。体现式值不能为负。
例: ?SQRT(2),(2)^(1/2)
STORE –100 TO X
?SIGN(X)*SQRT(ABS(X))
3·圆周率函数
PI() 返回圆周率π(数值型),该函数没有自变量。
4·求整数函数 *
INT(<数值体现式>) 返回指定数值体现式整数某些
CEILING(<作数值体现式>) 返回不不不小于或等于指定数值体现式最小整数。
FLOOR(<数值体现式>) 返回不不小于或等于指定数值体现式最大整数。
例: STORE 5.8 TO X
?INT(X),INT(-X),CEILING(X),CEILING(-X),FLOOR(X),FLOOR(-X)
5·四舍五入函数 *
ROUND(<数值体现式1>,<数值体现式2>)
返回指定体现式在指定位置四舍五入后成果。<数值体现式2>指明四舍五入位置。若
<数值体现式2>不不不小于等于0,体现要保留小数位数
<数值体现式2>不不小于0,体现整数某些舍入位数。
例:X = 345.345
?ROUND(X,2),ROUND(X,1),ROUND(X,0),ROUND(X,-1)
6·求余数函数 *
MOD(<数值体现式l>,<数值体现式2>)
返回两个数值相除后余数。<数值体现式1>是被除数,<数值体现式2>是除数。函数返回值符号与<数值体现式2>相似。
例:?MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3)
7·求最大值和最小值函数
MAX(<数值体现式l>,<数值体现式2> [,<数值体现式3>,……])
计算各自变量体现式值,并返回其中最大值。
MIN(<数值体现式l>,<数值体现式2> [,<数值体现式3>,……])
计算各自变量体现式值,并返回其中最小值。
自变量体现式类型可以是数值型、字符型、货币型、双精度型、浮点型、日期时间型,但所有体现式类型必要相似。
例: ?MAX("2","12","05"),MAX(2,12,05),MIN("汽车","飞机","轮船")
?MAX({^-05-10},{^-12-03},{^-01-01})
8·随机函数RAND()
反回一种0~1随机数,其值不确定。
二、字符函数 P46 表3-3
指自变量一般是字符型数据函数。
1·求字符串长度函数
LEN(〈字符体现式〉)
返回指定字符体现式值长度,即所包括字符个数(一种中文占两个字符)。函数值为数值型。
例:X = "中文visual FoxPro6.0"
?LEN(X)
2·大小写转换函数
LOWER(<字符体现式>) 大写字母转换成小写字母,其她字符不变
UPPER(<字符体现式>) 小写字母转换成大写字母,其她字符不变
例:?LOWER(‘Xly2A*’),UPPER(‘n=l’)
3·空格字符串生成函数
SPACE(<数值体现式>) 返回由指定数目空格构成字符串。
?”ab”+ SPACE(3)+”cd”
4·删除先后空格函数 *
TRIM(〈字符体现式〉) 返回字符体现式值去掉尾部空格后形成字符串。
LTRIM(〈字符体现式〉) 返回字符体现式值去掉前导空格后形成字符串。
ALLTRIM(〈字符体现式〉 返回字符体现式值去掉前导和尾部空格后形成
字符串。
例: STORE SPACE(1) + "TEST" + SPACE(3) TO SS
?TRIM(SS) + LTRIM(SS) + ALLTRIM(SS)
TESTTEST TEST
?LEN(SS),LEN(TRIM(SS)),LEN(LTRIM(SS)),LEN(ALLTRIM(SS))
5·取子串函数 *
LEFT(〈字符体现式〉,〈长度〉)
从体现式值左端取一种指定长度子串作为函数值
RIGHT(〈字符体现式〉,〈长度〉)
从体现式值右端取一种指定长度子串作为函数值
SUBSTR(〈字符体现式〉,〈起始位置〉[,<长度>])
从体现式值指定起始位置取指定长度子串作为函数值,若缺省第三
个自变量之长度,,则从指定位置一直取到最终一种字符。
例:STORE "GOOD BYE!" TO X
?LEFT(X,2),SUBSTR(X,6,2) + SUBSTR(X,6),RIGHT(X,3)
6·计算子串出现次数函数 *
OCCURS(<字符体现式1>,<字符体现式2>)
返回第一种字符串在第二个字符串中出现次数,函数值为数值型,若第一种字符串不是第二个字符串子串,函数值为0。
例:STORE‘abracadabra’ TO S
?OCCURS('a',S),OCCURS('b',S),OCCURS('c',S),OCCURS('e',S)
7·求子串位置函数 *
AT(〈字符体现式1〉,〈字符体现式2〉[,<数值体现式>])
ATC(〈字符体现式1〉,〈字符体现式2〉[,<数值体现式>])
函数值为数值型。假如<字符体现式1>是<字符体现式2>子串,则返回<字符体现式1>值首字符在<字符体现式2>值中位置;若不是子串,则返回0。
ATC()与AT()功能类似,但在子串比较时不区别字母大小写。
第三个自变量<数值体现式>,用于表明要在<字符体现式2>值中搜索<字符体现式1>值第几次出现,其默认值是1。
例: STORE "This is visual FoxPro" TO X
?AT("fox",X),ATC("fox",X),AT("is",X,3),AT("xO",X)
8·子串替代函数 *
STUFF(<字符体现式>,<起始位置>,<长度>,<字符体现式2>)
从<字符体现式><起始位置>开始删除<长度>个字符后插入<字符体现式2>。
例:STORE “GOOD BYE!”TO S1
STORE “MORNING” TO S2
?STUFF(S1,6,3,S2),STUFF(S1,1,4,S2)
9·字符替代函数 *
CHRTRAN(<字符体现式1>,<字符体现式2>,<字符体现式3>)
以<字符体现式3>替代在<字符体现式1>中出现<字符体现式2>。
例: X1 = CHRTRAN("ABACAD","ACD","X12")
Y1 = CHRTRAN("计算机ABC","计算机","电脑")
Z1 = CHRTRAN("人们好!","人们","你")
?X1,Y1,Z1
10·字符串匹配函数
LIKE(<字符体现式1>,<字符体现式2>)
比较两个字符串对应位置上字符,若所有对应字符都相匹配(注意区别大小写),函数返回逻辑真(.T.),否则返回逻辑假 (.F.)。
<字符体现式1>中可以包括通配符*和?。* 可与任何数目字符相匹配,?可与任何单个字符相匹配。
例: STORE “abc” TO X
STORE "abcd" TO Y
?LIKE("ab*",X),LIKE("ab*",Y),LIKE(x,y)
?LIKE("?b?",X),LIKE("Abc",X)
三、日期和时间函数 P46 表3-4
自变量一般是日期型数据或日期时间型数据。
1·系统日期和时间函数
DATE() 返回目前系统日期,函数值为日期型。
TIME() 以24小时制、hh:mm:ss格式返回目前系统时间,函数值为
字符型。
DATETIME() 返回目前系统日期时间,函数值为日期时间型。
例:?DATE(),TIME(),DATETIME()
2·求年份、月份和天数函数
YEAR(<日期体现式> / <日期时间体现式>)
从指定日期体现式或日期时间体现式中返回年份
MONTH(<日期体现式> / <日期时间体现式>)
从指定日期体现式或日期时间体现式中返回月份
DAY(<日期体现式> / <日期时间体现式>)
从指定日期体现式或日期时间体现式中返回月里面天数
这三个函数返回值都为数值型。
例:STORE{^-08-18} TO d
?YEAR(d),MONTH(d),DAY(d)
3·时、分和秒函数
HOUR(<日期时间体现式>) 从日期时间体现式中返回小时某些 (24小时制)
MINUTE(<日期时间体现式>) 从日期时间体现式中返回分钟某些。
SEC(<日期时间体现式>) 从日期时间体现式中返回秒数某些。
这三个函数返回值都为数值型。
例:STORE {^-03-18 02:30:50P} TO t
?HOUR(t),MINUTE(t),SEC(t)
四、数据类型转换函数 P46 表3-6
功能是将某一种类型数据转换成另一种类型数据。
1·数值转换成字符串 *
STR(〈数值体现式> [,<长度> [,<小数位数>]]〉
将<数值体现式>值转换成字符串,转换时根据需要自动进行四舍五入。
返回字符串理想长度L是<数值体现式>值整数某些位数加上<小数位数>值,再加上 1位小数点。
假如<长度>值不不不小于L,则字符串加前导空格以满足规定<长度>规定;
假如<长度>值不不不小于等于<数值体现式>值整数某些位数 (波及负号)但又不不小于L,则优先满足整数某些而自动调整小数位数;
假如<长度>值不不小于<数值体现式>值整数某些位数,则返回一串星号(*)。
<小数位数>默认值为0,<长度>默认值为10,
例:STORE –123.456 TO N
?"N=" + STR(N,8,3)
N = -123.456
?STR(N,9,2),STR(N,6,2),STR(N,3),STR(N,6),STR(N)
-123.46 -123.5 *** -123 -123
2·字符串转换成数值 *
VAL(<字符体现式>)
将由数字符号(波及正负号、小数点)构成字符型数据转换成对应数值型数据。1、若字符串内出现非数字字符,那么只转换前面某些;2、若字符串首字符不是数字符号,则返回数值零,但忽视前导空格。
例:STORE ‘-123.’TO X
STORE ‘45’TO Y
STORE ‘A45' TO Z
?VAL(X+Y),VAL(X+Z),VAL(Z+Y)
3·字符串转换成日期或日期时间 *
CTOD(<字符体现式>) 将<字符体现式>值转换成日期型数据
CTOT(<字符体现式>) 将<字符体现式>值转换成日期时间型数据
字符串中日期某些格式要与SET DATE TO 命令设置格式一致。其中年份可以用四位,也可以用两位。
例: SET DATE TO YMD &&显示日期或日期时间时,用4位数显示年份
SET CENTURY ON
d1 = CTOD('/03/18')
t1 = CTOT(‘/03/18 10:31:54PM‘)+ 20
?d1,t1
4·日期或日期时间转换成字符串
DTOC(<日期体现式> / <日期时间体现式> [,1])
将日期型数据或日期时间数据日期某些转换成字符串
TTOC(<日期时间体现式> [,1])
将日期时间数据转换成字符串。
字符串中日期某些格式与SET DATE TO语句设置和SET CENTURY ON / FF(ON为四位数年份,OFF为两位数年份)语句设置有关。
时间某些格式受SET HOURS TO l2 / 24语句设置影响。
对DTOC(),假如使用选项1,则字符串格式总是为YYYYMMDD,共8个字符。
对TTOC(),假如使用选项1,则字符串格式总是为YYYYMMDDHHMMSS,采用24小时制,共14个字符。
例:STORE DATETIME() TO T
?T
?DTOC(t),DTOC(t,1),TTOC(t),TTOC(t,1)
5·宏替代函数 *
&<字符型变量>,[.]
替代出字符型变量内容,即&值是变量中字符串。假如该函数与其后字符无明确分界,则要用"·"作函数结束标识。宏替代可以嵌套使用。
例: STORE “STU”TO DB
USE &DB &&相称于USE STU
XM1 = "姓名"
?&XM1 - "你好!" &&相称于 ?姓名-"你好!"
李梅你好! &&字段变量姓名值是李梅
SKIP &&转到下条记录
?”姓名”,&XM1 &&相称于?“姓名”,XM
姓名 李英
五、测试函数 P46 表3-5 P47 表3-7
在数据处理过程中,有时顾客需要理解操作对象状态。例如,要使用文献与否存在、数据库表目前记录号、与否抵达了文献尾、检索与否成功、某工作区中记录指针所指目前记录与否有删除标识、数据类型等信息。尤其是在运行应用程序时,常常需要根据测试成果来决定下一步处理措施或程序走向。
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)
2·空值(NULL值)测试函数
ISNULL(<体现式>)
判断一种体现式运算成果与否为NULL值,若是NULL值返回逻辑真 (.T.),否则返回逻辑假 (.F.)
例:STORE .NULL. TO X
?X,ISNULL(X)
3·"空"值测试函数 *
EMPTY(<体现式>)
根据指定体现式运算成果与否为"空"值,返回逻辑真(.T.)或逻辑假(.F.)。
首先要注意,这里所指 "空"值与NULL值是两个不一样概念。函数EMPTY(.NULL.)返回值为逻辑假(.F.)。另首先,该函数自变量体现式类型除了可以是数值之外,还可以是字符型、逻辑型、日期型等类型。不一样类型数据"空"值,有不一样规定如下表所示。
数据类型
"空值"
数据类型
"空值"
数值型
0
双精度型
0
字符型
空串、空格、制表符、回车、换行
日期型
空(如CTOD(""))
货币型
0
日期时间
空(如CTOT(""))
浮点型
0
逻辑型
.F.
整型
0
备注字段
空(无内容)
例:?EMPTY(.NULL.),EMPTY(0),EMPTY(‘ ‘) ,EMPTY(.F.)
USE STU
EMPTY(简历)
4·数据类型测试函数
VARTYPE(<体现式> [,<逻辑体现式>])
测试<体现式>类型,返回一种大写字母,函数值为字符型。字母含义如下表所示。
若<体现式>运算成果是NULL值,则根据<逻辑体现式>值决定与否返回<体现式>类型:假如<逻辑体现>值为 .T.,就返回<体现式>原数据类型。假如<逻辑体现式>值为 .F. 或缺省,则返回X,以表明<体现式>运算成果是NULL值。
返回字母
数据类型
返回字母
数据类型
C
字符型或备注型
G
通用型
N
数值型、整型、浮点型或双精度型
D
日期型
Y
货币型
T
日期时间型
L
逻辑型
X
Null值
O
对象型
U
未定义
例:X = "AAA"
STORE 10 TO Y
STORE .NULL. TO X
STORE $100.2 TO Z
?VARTYPE(X),VARTYPE(X,.T.),VARTYPE(Y),VARTYPE(Z)
X C N Y
5·表文献尾测试函数 *
系统对表中记录是逐条进行处理。对于一种打开表文献来说,在某一时刻只能处理一条记录。VFP为每一种打开表设置了一种内部使用记录指针,指向正在被操作记录,该记录称为目前记录。记录指针作用是标识表目前记录。
表文献逻辑构造下图所示。最上面记录是首记录,记为TOP,最下面记录是尾记录,记为BOTTOM。
在第一种记录之前有一种文献起始标识,称为Beginning of File(BOF);
在最终一种记录背面有一种文献结束标识,End of File(EOF)
使用测试函数可以得到指针位置。刚刚打开表时,记录指针总是指向首记录。
文献起始标识
首记录(TOP)
第2个记录
:
记录指针
第i个记录
:
尾记录(BOTTOM)
EOF([<工作区号> / <表别名>])
测试指定表文献中记录指针与否指向文献尾,若是返回逻辑真 .T.,否则返回逻辑假 .F.。表文献尾是指最终一条记录背面位置。若缺省[<工作区号> / <表别名>],则测试目前表文献。
若在指定工作区上没有打开表文献,函数返回逻辑假 .F.。若表文献中不包括任何记录,函数返回逻辑真 .T.。
例: USE STU
Go BOTTOM
?EOF()
SKIP
?EOF(),EOF(2) &&假定2号工作区没有打开表
6·表文献首测试函数
BOF([<工作区号> / <表别名>])
测试目前表文献(若缺省自变量)或指定表文献中记录指针与否指向文献首,若是返回逻辑真 .T.,否则返回逻辑假 .F.。表文献首是指第一条记录前面位置。 若指定工作区上没有打开表文献,函数返回逻辑假 .F.。若表文献中不包括任何记录,函数返回逻辑真 .T.。
7·记录号测试函数 *
RECNO([<工作区号> / <表别名>])
返回目前表文献(若缺省[<工作区号> / <表别名>])或指定表文献中目前记录(记录指针所指记录)记录号。假如指定工作区上没有打开表文献,函数值为0。假如记录指针指向文献尾,函数值为表文献中记录数加 1。假如记录指针指向文献首,函数值为表文献中第一条记录记录号。
例: USE STU &&假定表中有5条记录
?BOF(),RECNO() && 显示 .F. l
SKIP -1
?BOF(),RECNO() &&显示 .T. 1
GO BOTTOM
?EOF(),RECNO() &&显示 .F. 记录数
SKIP
?EOF(),RECNO() &&显示 .T. 目前记录号(记录数加 1)
8·记录个数测试函数 *
RECCOUNT([<工作区号> / <表别名>])
返回目前表文献(若缺省自变量)或指定表文献中记录个数。假如指定工作区上没有打开表文献,函数值为0。
RECCOUNT()返回是表文献中物理上存在记录个数。不管记录与否被逻辑删除以及SET DELETED状态怎样,也不管记录与否被过滤(SET FILTER),该函数都会把它们考虑在内。
例: USE STU
?RECCOUNT() &&显示记录数
9·条件测试函数 *
IIF(<逻辑体现式>,<体现式1>,<体现式2>)
测试<逻辑体现式>值,若为逻辑真 .T.,函数返回<体现式 l>值,假 .F.函数返回<体现式2>值。<体现式1>和<体现式2>类型不规定相似。
例:X = 100
Y = 300
?IIF(X>100,X-50,X+50),IIF(Y>100,Y-50,Y+50)
SET CENTURY ON
STORE DATE() TO d
STORE DTOC(d) TO s
?s,IIF(LEN(s)=8,"这是两位数年份","年份是:" +;STR(YEAR(d),4))
当日系统日期 年份是:
10·记录删除测试函数
DELETED([<表别名> / <工作区号>])
测试指定表,或在指定工作区中所打开表,记录指针所指目前记录与否有删除标识 "*"。若有为真,否则为假。若缺省[<表别名> / <工作区号>],则测试目前工作区中所打开表。
例: SELECT 0 &&选用最小号空闲工作区
USE STU &&打开职工表
DELETE FOR姓名= "李梅" &&逻辑删除记录
1个删除记录
LIST 学号,姓名 FOR DELETED() &&列出被逻辑删除记录 VFP6.0提供非常丰富函数,在此仅举出某些常用函数。
3·2 体现式
体现式是由常量、变量和函数通过特定运算符连接起来式子。
无论是简朴还是复杂合法体现式,按照规定运算规则最终均能计算出一种成果,即体现式值。根据体现式值类型,体现式可分为数值体现式、字符体现式、日期时间体现式和逻辑体现式。大多数逻辑体现式是带比较运算符关系体现式。
一、数值、字符与日期时间体现式
1·数值体现式
数值体现式由算术运算符将数值型数据连接起来形成,其运算成果仍然是数值型数据。数值型数据可以是数值型常量或者变量。
1)算术运算优先级
数值体现式中算术运算符有些与寻常使用运算符稍有区别,算术运算符及其含义和优先级为:小括弧,乘方运算,乘、除运算、求余运算,加、减运算。
2)求余运算
求余运算 % 和取余函数 MOD()作用相似。余数正负号与除数一致。乘*、除/和求余运算%时,它们具有相似优先级。
例:求余运算
?15%4,15%-4
STORE 54 TO X,Y
Z = 21
?X%Z,MOD(X,Z),X%(Y-70)
2·字符体现式
由字符串运算符将字符型数据连接起来形成,其运算成果仍然是字符型数据。
+:将先后两个字符串首尾连接形成一种新字符串。
-:将连接先后两个字符串,并将前字符串尾部空格移到合并后新字符串尾部。
例: A = "Hello "
b = "everyone!"
?a + b,a - b
3·日期时间体现式
使用运算符有:+ 和 -
日期时间体现式格式有一定限制,不能任意组合,例如,不能用运算符“+”将两个<日期>连接起来。合法日期时间体现式格式如下所示,其中<天数>和<秒数>都是数值体现式。
<日期> + <天数> 日期型,指定日期若干天后日期
<天数> + <日期> 日期型,指定日期若干天后日期
<日期> - <天数> 日期型,指定日期若干天前日期
<日期> - <日期> 数值型,两个指定日期相差天数
<日期时间> + <秒数> 指定日期时间若干秒后日期时间数
<秒数> + <日期时间> 指定日期时间若干秒后日期时间间
<日期时间> - <秒数> 指定日期时间若干秒前日期时间数
<日期时间> - <日期时间> 两个指定日期时间相差秒数
例: ?{^-03-19} + 10,{^-03-19}–{^-03-19}
?{^-03-19 10:10:10 AM} + 10
符号 + 和 - 既可以作为日期时间运算符,也可以作为算术运算符和字符串连接运算符。究竟作为哪种运算符使用,要看它们所连接运算对象数据类型而定。
二、关系体现式
1·关系体现式
关系体现式一般也称为简朴逻辑体现式,它由关系运算符将两个运算对象连接起来形成,即:<体现式1> <关系运算符> <体现式2>。
其作用是比较两个体现式大小或先后。其运算成果是逻辑型数据。关系运算符及其含义如下,它们优先级相似。
< 不不小于 , > 不不不小于 , = 等于 , <>、#、!= 不等于
<= 不不小于等于 , >= 不不不小于等于
== 字符串精确比较 , $ 字符子串包括测试
运算符 == 和 $ 仅合用于字符型数据。其她运算符合用于任何类型数据,但先后两个运算对象数据类型要一致。
1)数值型和货币型数据比较
按数值大小比较,波及负号。例如,0 >-1 $150 > $105
2)日期或日期时间型数据比较
越早日期或时间越小,越晚日期或时间越大。
例如,{^-01-10} > {^-12-28}
3)逻辑型数据比较
.T. 不不不小于 .F.
4)子串包括测试
关系体现式 <前字符型体现式> $ <后字符型体现式> 为子串包括测试,假如前者是后者一种子字符串,成果为逻辑真(.T.),否则为逻辑假(.F.)。
例: STORE “计算机”TO s1
STORE “微型计算机” TO s2
?S1 $ S2,S2 $ S1,(S1 $ S2) > (S2 $ S1)
2·字符串精确比较与EXACT设置
在用双等号运算符比较两个字符串时,只有当两个字符串完全相似(波及空格以及各字符位置)时,运算成果才会是逻辑真 .T.,否则为逻辑假 .F.。
在用单等号运算符占比较两个字符串时,运算成果与SET EXACT ON / OFF设置有关。该命令是设置精确匹配与否开关,可在命令窗口或在程序中执行,也可以通过 “选项”对话框中 "数据" 选项卡设置。
系统默认OFF状态。当处在OFF状态时,只要右边字符串与左边字符串前面某些内容相匹配,即可得到逻辑真 .T. 成果。也就是说,字符串比较以右面字符串为目旳,右字符串结束即终止比较。
例: 字符串精确比较与EXACT设置示例
SET EXACT OFF &&系统默认,以右串为结束标志
STORE "计算机" TO S1
STORE "计算机 " TO S2
STORE "计算机世界计” TO S3
?S1=S3,S3=S1,S1=S2,S2=S1,S2 == S1
三、逻辑体现式
1·逻辑体现式
由逻辑运算符将逻辑型数据连接起来而形成,其运算成果仍然是逻辑型数据。逻辑运算符有三个:.NOT. 或 ! 或 NOT —— 逻辑非
.AND. 或 AND —— 逻辑与
.OR. 或 OR —— 逻辑或
优先级次序依次为 NOT、AND、OR。
逻辑运算符运算规则如下
<1E1> —— 逻辑型数据1、<1E2> —— 逻辑型数据2
<1E1>
<1E2>
.NOT.<1E1>
<1E1>.AND.<1E2>
<1E1>.OR.<1E2>
.T.
.T.
.F.
.T.
.T.
.T.
.F.
.F.
.F.
.T.
.F.
.T.
.T.
.F.
.T.
.F.
.F.
.T.
.F.
.F.
在许多命令和语句格式中均有<条件>语法成分,这里<条件>,就
展开阅读全文