图3-1 “选项”对话框之“数据”选项卡
(3)字符串精确比较与EXACT的设置
SET EXACT OFF &&系统默认,以右串为结束标志 STORE \计算机\STORE \计算机 \STORE \计算机世界\?s1=s3, s3=s1, s1=s2, s2=s1, s2= =s1 .F. .T. .F. .T. .F.
SET EXACT ON &&填充空格,等长比较 ?s1=s3, s3=s1, s1=s2, s2=s1, s2= =s1 .F. .F. .T. .T. .F.
注:SET EXACT ON的设置也可在“数据”选项卡中完成,见图3-1左下方。 (4)由不同运算符组成的表达式
?12>2 AND '人'>\人民\&&结果为.F. ?((10%3=1) AND (15%2=0)) OR '电脑'!= '计算机' &&结果为.T.
注:在计算由不同运算符组成的表达式时,先执行算术运算符、字符串运算符和日期时间运算符,再执行关系运算符,最后执行逻辑运算符。
3.5.3 求函数的值
(1)
STORE 10 TO x
?ABS(5-x), ABS(x-5), SIGN(5-x), SIGN(x-10) &&SIGN()为符号函数 5 5 -1 0 ?SQRT(2*SQRT(2)), (2*6)^(1/2) 1.68 3.46
(2)
STORE 5.8 TO x
?INT(x), INT(-x), CEILING(x), CEILING(-x), FLOOR(x), FLOOR(-x) 5 -5 6 -5 5 -6
13
注:INT(x)函数返回x的整数部分,CEILING(x)函数返回大于或等于x的最小整数,FLOOR(x)函数返回小于或等于x的最大整数。
(3)
x= 345.345
?ROUND(x,2) , ROUND(x,1), ROUND(x,0), ROUND(x,-1) 345.35 345.3 345 350
注:若ROUND( )函数的第二个参数大于等于0,则表示的是要保留的小数位数;若小于0,则表示的是整数部分的舍入位数。
(4)
?MAX('2', '12', '05'),MIN('汽车','飞机','轮船') 2 飞机
(5)
x='中文Visual FoxPro6.0' ?LEN(x) 20
(6)
STORE SPACE(1)+\?TRIM(ss)+LTRIM(ss)+ALLTRIM(ss) TESTTEST TEST
?LEN(ss),LEN(TRIM(ss)),LEN(LTRIM(ss)),LEN(ALLTRIM(ss)) 8 5 7 4
注:TRIM( )函数返回指定字符表达式值去掉尾部空格后形成的字符串。LTRIM( )函数返回指定字符表达式值去掉前导空格后形成的字符串。ALLTRIM( )函数返回指定字符表达式值去掉前导和尾部空格后形成的字符串。
(7)
STORE \
?LEFT(x, 2), SUBSTR(x, 6, 2)+SUBSTR(x, 6), RIGHT(x, 3) GO BYBYE! YE!
(8)
STORE 'abracadabra' TO s
?OCCURS('a',s), OCCURS('b',s), OCCURS('c',s), OCCURS('e',s) 5 2 1 0
注:OCCURS( )为计算子串出现次数函数,若第一个字符串不是第二个字符串的子串,函数值为0。
(9)
STORE \
? AT(\ 0 16 10 0
注:ATC( )函数与AT( )函数功能类似,但在子串比较时不区分字母大小写。 (10)
STORE 'GOOD BYE!' TO s1 STORE 'MORNING' TO s2
?STUFF(s1, 6, 3, s2), STUFF(s1, 1, 4, s2) GOOD MORNING!MORNING BYE!
14
注:子串替换函数STUFF(C1,N,L,C2)用C2值替换C1中由起始位置N和长度L指明的一个子串。替换和被替换的字符个数不一定相等。如果L值是0,C2则插在由N指定的字符前面;如果C2值是空串,则C1中由N和L指明的子串被删去。
(11)
x1= CHRTRAN(\ y1=CHRTRAN(\计算机ABC\计算机\电脑\ z1=CHRTRAN('大家好!','大家','您') ?xl,y1,z1
XBX1X2 电脑ABC 您好!
注:字符替换函数CHRTRAN(C1,C2,C3)的参数(自变量)是3个字符表达式。当C1中的一个或多个字符与C2中的某个字符相匹配时,就用C3中的对应字符(相同位置)替换这些字符。如果C3包含的字符个数少于C2包含的字符个数,因而没有对应字符,那么C1中相匹配的字符将被删除;如果C3包含的字符个数多于C2包含的字符个数,则多余字符被忽略。
(12)
STORE \STORE \
?LIKE(\ .T. .T. .F. .T. .F.
注:字符串匹配函数LIKE(C1,C2)比较C1与C2对应位置上的字符。若所有对应字符都相匹配,则函数返回逻辑.T.;否则,返回逻辑.F.。C1中可以包含通配符“*”和“?”。其中,“*”可与任何数目的字符相匹配,“?”可以与任意单个字符相匹配。
(13)
STORE {^2004-08-18} TO d
STORE {^2004-03-18 02:30:50 P} TO t ?YEAR(d), MONTH(d), DAY(d) 2004 8 18
?HOUR(t),MINUTE(t),SEC(t) 14 30 50
(14)
STORE -123.456 TO n ?\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
注:数值转换成字符串函数STR(N[,L[,〈小数位数〉]]),如果长度L值小于数值表达式N的整数部分位数,则返回一串“*”。〈小数位数〉的默认值为0,L的默认值为10。
(15)
STORE '-123.' TO x STORE '45' TO y STORE 'A45' TO z
?VAL(x+y), VAL(x+z), VAL(z+y) -123.45 -123.00 0.00
15
注:字符串转换成数值函数VAL(C),若字符串内出现非数字字符,那么只转换前面部分;若字符串的首字符不是数字,则返回数值0,但忽略前导空格。
(16)
SET DATE TO YMD
SET CENTURY ON &&显示日期或日期时间时,用4位数显示年份 SET CENTURY TO 19 ROLLOVER 51 D1=CTOD('2001/03/18')
t1=CTOT('2001/03/18'+' '+TIME())
?dl,t1,CTOD('50/01/01'),CTOD('51/01/01')
2001/03/18 2001/03/18 10:31:54 PM 2050/01/01 1951/01/01
注:将字符值转换成日期型或日期时间型函数CTOD(C)与CTOT(C)。字符串中的日期部分的格式要与SET DATE TO命令设置的格式一致。SET CENTURY TO语句指定:小于51的两位数年份属于21(即19+1)世纪,而大于等于51的两位数年份属于20(即19)世纪。
(17)
m='5' x=m ?x,&x m 5
注:宏替换函数&〈字符型内存变量〉[.字符表达式]用于替换出字符型内存变量的内容。如果该函数与其后的字符无明确分界,则要用“.”作为函数结束标识。
(18)
STORE .NULL. TO x STORE 100 TO y
?BETWEEN (150,y,y+100), BETWEEN(90,x,y) .T. .NULL.
注:值域测试函数BETWEEN(〈表达式T〉,〈表达式L〉,〈表达式H〉)判断一个表达式的值是否介于另外两个表达式值之间。其中,〈表达式L〉或〈表达式H〉有一个值为.NULL.,则函数值为.NULL.。
(19)
STORE .NULL.TO x ?X,ISNULL(x) .NULL. .T.
注:空(NULL)值测试函数ISNULL(〈表达式〉)判断一个表达式的运算结果是否为NULL值。若是NULL值,则返回逻辑真(.T.)。
(20)
EMPTY(.NULL.) .F.
注:“空”值测试函数EMPTY(〈表达式〉)根据指定表达式的运算结果是否为“空”值,返回逻辑真(.T.)或逻辑假(.F.)。
首先要注意,这里所指的“空”值与NULL值是两个不同的概念。不同类型数据的“空”值,有不同的规定,表3-7列出了不同类型数据的“空”值。
表3-7 不同类型数据的“空”值规定
16
相关推荐: