S2='︼成︼绩︼'
? S1 + S2 + '︼表︼A' && 输出: ︼学︼生︼︼︼成︼绩︼︼表︼A ? S1-S2 + '︼表︼A' && 输出: ︼学︼生︼成︼绩︼︼︼︼表︼A
可见运算符“-”并不移动第一个字符型数据的中间空格位置。
2.4.2 常用字符型函数
字符型函数是指函数值为字符型数据的函数。 1. 生成空格函数
函数格式:Space(数值表达式)
函数说明:数值表达式的值应大于或等于0。设其整数部分为n,利用此函数可以产生由n个空格的字符串。若n等于0,则函数产生一个空字符串,即长度为0的字符串。
【 例 2.32 】
? ’VFP’+Space(3)+’6.0版’
&& 输出结果为: VFP︼︼︼6.0版
2. 删除空格函数
函数格式:Ltrim(<字符表达式>)
Trim(<字符表达式>) Rtrim(<字符表达式>) Alltrim(<字符表达式>)
函数说明:利用Ltrim、Trim 和Alltrim函数可分别去掉字符表达式值的左端空格、尾部空格和两端空格。Trim和Rtrim功能相同。
【 例 2.33 】
? Ltrim('︼成︼绩︼') ? Alltrim(')成)绩)' )
&& 输出:成︼绩︼ && 输出:成︼绩
? Trim ( '︼成︼绩︼' ) && 输出:︼成︼绩
可见这3个函数都不能去掉字符表达式值的中间空格。 3. 取左子串函数
函数格式:Left (<字符表达式>,<长度>)
函数说明:<长度>是数值表达式。设其值的整数部分为n,从字符表达式值的左端第一个字符开始取n个字符作为函数值。
【 例 2.34 】
? Left(”VFP 6.0”,3)
&& 输出结果为: VFP
4. 取右子串函数
函数格式:Right(<字符表达式>,<长度>)
函数说明:从字符表达式值的最右端开始向左取子串,其他同left函数。 【 例 2.35 】
? Right(”吉林大学”,4)
&& 输出结果为:大学
5. 取任意子串函数
函数格式:Substr(<字符表达式>,<起始位置>[,<长度>]) 函数说明:从<字符表达式>值的<起始位置>取指定<长度>的子串作为函数值。<起始位置>和<长度>都是数值表达式,系统对<起始位置>和<长度>自动取整。
【 例 2.36 】
X=”2008年北京奥林匹克运动会”
? Substr(X,7,6)+ Substr(X,19,2)+ Substr(X,23,2) && 输出结果为:北京奥运会
6. 复制字符函数
函数格式:Replicate (<字符表达式>,<数值表达式>)
函数说明:将字符表达式值复制后形成新的字符串,复制次数由数值表达式值的整数部分确定。
【 例 2.37 】
? Replicate(”***”,4) && 输出结果为:************
7. 子串替换函数
函数格式:Stuff(<字符表达式1>,<开始位置>,<长度>,<字符表达式2>)
函数说明:<开始位置>,<长度>都为数值表达式,系统自动取整,设<长度>值的整数部分为n。函数的功能是用字符表达式2的值替换字符表达式1值中开始位置的n个字符。若长度值是0,则将字符表达式2的值插在开始位置字符之前;若字符表达式2的值是空字符串,则删除字符表达式1中开始位置的n个字符。
【 例 2.38 】
? Stuff('ABC',2,1,'XY'), Stuff('ABCDE',3.98,0,’XY’) && 输出:AXYC ABXYCDE ? Stuff('ABCDE', 3.98 , 2, ’’) && 输出: ABE
8. 字符翻译函数
函数格式:Chrtran(<字符表达式1>,<字符表达式2>,<字符表达式3>)
函数说明:对字符表达式1值中的每个字符在字符表达式2值中确定其出现位置n,若n>0且小于或等于字符表达式3值的长度,则用字符表达式3值中的第n个字符替换字符表达式1中的当前字符;若n大于字符表达式3值的长度,则从字符表达式1值中删除当前字符;若n=0,则字符表达式1值中的当前字符不变。
【 例 2.39 】
? Chrtran('ABACAD','AC','XY') && 输出结果: XBXYXD ? Chrtran('ABCD','AC','X') && 输出结果: XBD
? Chrtran('ABCDE','BC','XYZ ') && 输出结果: AXYDE
9. 字符匹配函数
函数格式:Like(<字符表达式1>,<字符表达式2>))
函数说明:若字符表达式1与字符表达式2的值相匹配,则函数值是.T.,否则函数值是.F.。字符表达式1中允许使用“*”和“?”通配符。字符表达式2中出现的“*”
和“?”是普通字符。
【 例 2.40 】
? Like('*A*','GCADFR'), Like('GCADFR','*A*') && 输出结果: .T. .F.
10. 大小写字母转换函数
函数格式: Lower(<字符表达式>)
Upper(<字符表达式>)
函数说明:Lower函数将字符表达式值中的大写字母转换为小写;Upper函数将字符表达式值中的小写字母转换为大写。在转换时其他字符不变。
【 例 2.41 】
? Lower(”英语2AbC”),Upper(”英语2AbC”) && 输出: 英语2abc 英语2ABC
11. 系统时间函数
函数格式:Time ([<数值表达式>])
函数说明:函数返回值为字符型数据,值为系统当前时间,数值表达式可以是任意值,表示时间精确到百分秒。格式为:hh:mm:ss[.<百分秒>],采用24小时制。
【 例 2.42 】
? ”现在时间是”+ Time( ) && 输出:现在时间是14:20:30 ? ”现在时间是”+ Time(1) && 输出:现在时间是14:20:30.85
12. 数值转换成字符函数
函数格式:Str(<数值表达式>[,<长度>[,<小数位数>]])
函数说明:将数值表达式值转换成字符型数据。<长度>和<小数位数>是数值型表达式,系统自动取整。<长度>指转换后字符串的整数、小数和1位小数点的总长度。
【 例 2.43 】
? Str(3.146,5,3) && 输出结果为:3.146 ? Str(3.146,6,1) && 输出结果为:︼︼︼3.1
设: <长度>为m,<小数位数>为n,<数值表达式>值的整数位数为k。
(1)省略m和n:系统默认m是10,n是 0。若k>10,则用科学记数法表示结果;若k<10,则数据右对齐且左补空格。
【 例 2.44 】
? Str(12345678999.123) && 输出结果为:︼1.234E+10
? Str(123.456) && 输出结果为:︼︼︼︼︼︼︼123
(2)m=0:则结果为空串。 【 例 2.45 】
? Str(123456789.983,0,3)
(3)m
【 例 2.46 】
? Str(12345.987,4,3) && 输出结果为: ****
? Str(123456789.983,7,3) && 输出结果为: ︼1.2E+8
(4)在m,n和k不能全满足要求时:保证顺序:m→k→n。当m>k时,则保留m-k-1位小数(留1位放小数点),转换时在保留位的后1位上进行四舍五入。
【 例 2.47 】
? Str(123.45678,6,3) && 输出结果为: 123.46
(5)转换后的字符串长度小于m:则数据右对齐且左补空格。 【 例 2.48 】
? Str(1.234,6,2) && 输出结果为: ︼︼1.23
13. 日期转换成字符函数
函数格式:Dtoc(<日期表达式>)
函数说明:将日期表达式的值转换成字符型数据。函数值的格式与Set Date和Set Century的设置有关。
【 例 2.49 】
Set Date ANSI Set Century On
? '建国日期是' +Dtoc({^1949/10/01}) && 输出:建国日期是1949.10.01
14. 数据类型函数
函数格式:Vartype(<表达式>)
Type(’<表达式>’)
函数说明:Vartype与Type函数的功能类似,函数值都是大写数据类型符号,用以指出表达式值的数据类型。
两个函数的区别:Type函数将字符常数的内容作为表达式测试,而Vartype函数直接测试表达式;若表达式值为.Null.,则Vartype函数值为X,而Type函数值可能为U或某种数据类型符号;若测试的表达式中包含运算符和不符合运算要求的运算项(如未定义的变量和数据类型不一致等)只能用Type函数测试(函数值为U),而Vartype函数可以直接测试一个未定义的变量(函数值为U)。
【 例 2.50 】
? Vartype(123.4), Vartype('123.4'), Vartype($123.4) && 输出: N C Y ? Type('123.4 '),Type(\输出: N C Y ? Vartype(Date()), Vartype( Time()), Vartype(Datetime()) && 输出:D C T M =”A” N =1 K=3 K= .Null.
? Vart(M), Vart(N), Vart(Y) , Vart (.Null.),Vart(K) && 输出: C N U X X ? Type( 'M'),Type(\输出:C N U U N
2.5 日期及日期时间型表达式
日期型表达式是日期运算符连接日期或数值型数据所构成的运算式,运算结果可能是日期或数值型数据。日期时间型表达式是日期时间运算符连接日期时间或数值型数据所构成的运算式,运算结果可能是日期时间或数值型数据。
2.5.1 日期运算符
日期运算符有“+”和“-”。 1. 日期与数值运算
运算格式:<日期表达式>±<数值表达式>
运算说明:数值表达式的值表示天数,运算时对数值表达式自动取整。设数值表达式值的整数为n,则“+”表示求日期表达式值n天后的日期;“-”表示求日期表达式值n天前的日期。
【 例 2.51 】
Set Century On Set Date ANSI
? {^2008-09-10}+1,{^2008-09-10}-1 && 输出:2008.09.11 2008.09.09 ? {^2008-10-01}+1.56 && 对1.56自动取为1。输出: 2008.10.02 ? {^2008-10-03}-1.12 && 对1.12自动取为2。输出:2008.10.01
2. 日期与日期运算
运算格式:<日期表达式>-<日期表达式>
运算说明:运算结果表示两个日期之间相差的天数。 【 例 2.52 】
? {^2007-05-04}-{^2006-05-04}, {^2005-05-04}-{^2005-05-06} && 输出:365 -2
2.5.2 日期时间运算符
日期时间运算符有“+”和“-”。 1. 日期时间与数值运算
运算格式:<日期时间表达式>±<数值表达式>
运算说明:数值表达式的值表示秒数,运算时取整数为n。则“+”表示求日期时间表达式值n秒后的日期时间;“-”表示求日期时间表达式值n秒前的日期时间。
【 例 2.53 】
Set Century On Set Date ANSI