常用函数
数值转换字符(str())
【返回与指定数值表达式对应的字符。
语法:
str(数值表达式[,长度[,小数位数]])
返回值的类型
字符型
参数:
数值表达式:要被转换为字符的数值表达式。
长度:转换后字符的长度。该长度等于小数点和小数点右边第个数字所占字符的数目总和。
如果指定长度大于所需长度,自动在前面加空格补齐。
如果指定长度小于所需长度,返回一串星(*)号,表示数值溢出。
如省略长度,则默认长度为10。
小数位数:指定返回字符串中的小数位数。
如指定位数小于实际位数,则返回值四舍五入。
如指定位数大于实际位数,则加0补齐。
如省略小数位数,默认为0。
在指定了小数位数的情况下,如指定长度(第二个参数)小于总长度,但大于整数长度,则返回对小数部分做了四舍五入的字符。
备注:
返回后的值看起来还是数的形式,但它的数据类型已经变了,不再是一个数值,也就是不能再用来做加、减、乘、除的算术运算,但可以和
字符进行加减。比如:
? '季度'+1
就会出错,因为一个字符是不能和一个数值相加的。写成如下形式就可以了:
? '季度'+str(1,1)
结果是:
季度1
注意,这里一定要指定长度,否则由于默认长度是10,就会出现如下结果:
季度 1
假如不知道数值有几位数怎么办呢?请参见ltrim()函数。】
字符转换数值(val())
【将数字组成的字符表达式转换成数字值。
语法:
val(字符表达式)
返回值的类型
数值型
参数:
字符表达式:要被转换为数值的字符表达式。该表达式由最多16位的数字组成,若超过16位,则对其圆整。
备注:
val()函数从左到右返回字符表达式中的数字,直到遇到非数值型字符(忽略前面的空格)时为止。
若字符表达式的第一个字符不是数字,也不是正、负号,则返回0。
举例:
a='123'
如果按下面的写法,就会出错,因为一个字符不能与一个数值相加:
? a+3
写成如下形式便可以了:
? val(a)+3
结果是126。】
取系统日期(date())
【返回由操作系统控制的当前系统日期。
语法:
date()
返回值的类型
日期型】
取年份(year())
【从指定的日期表达式中返回年份。
语法:
year(日期表达式)
返回值的类型
数值型
参数:
日期表达式:指定的日期表达式,该函数即是返回其年份值。
举例:
? year(date())
如果当前的系统日期是1999年2月5日,则显示的结果为1999。】
取月份(month())
【从指定的日期表达式中返回月份。
语法:
month(日期表达式)
返回值的类型
数值型
参数:
日期表达式:指定的日期表达式,该函数即是返回其月份值。
举例:
? month(date())
如果当前的系统日期是1999年2月5日,则显示的结果为2】
取天日(day())
【以数值型返回日期表达式是当月的第几天。
语法:
day(日期表达式)
返回值的类型
数值型
参数:
日期表达式:指定的日期表达式,该函数返回该日期是当月的第几天。
举例:
? day(date())
如果当前的系统日期是1999年2月5日,则显示的结果为5。】
取整(int())
【返回数值表达式值的整数部分。
语法:
int(数值表达式)
返回值的类型
数值型
参数:
数值表达式:指定的数值表达式,该函数返回其整数部分。
举例:
? int(123.47)
结果是123。】
四舍五入(round())
【对指定表达式进行四舍五入运算,并把结果返回。
语法:
round(数值表达式,小数位数)
返回值的类型
数值型
参数:
数值表达式:指定的数值表达式,该函数返回其四舍五入后的值。
小数位数:保留的小数位数。
举例:
? round(123.457,2)
结果是123.46。】
删除标记(delete())
【删除标记函数(delete())
确定当前记录是否已做删除标记,若已做删除标记,返回真(.t.),否则返回假(.f.)。
语法:
delete([表别名|工作区])
返回值的类型:
逻辑型
参数:
表别名|工作区:该参数指定所要确定的表的别名或所在工作区,即您可以在一个工作区去检测另一工作区的表的记录是否做了删除标记,
而另一工作区的表可用其别名或工作区号来指定。该参数如省略,隐含为当前工作区,如有该参数的话,别名或工作区只选一个。】
记录号(recno())
【返回当前表或指定表中的当前记录号。
语法:
recno([表别名|工作区])
返回值的类型:
数值型
参数:
表别名|工作区:该参数指定所要确定的表的别名或所在工作区,即您可以在一个工作区去得到另一工作区的表的当前记录号,而另一工作
区的表可用其别名或工作区号来指定。该参数如省略,隐含为当前工作区,如有该参数的话,别名或工作区只选一个。】
记录数(reccount())
【返回当前表或指定表中的记录数目。
语法:
reccount([表别名|工作区])
返回值的类型:
数值型
参数:
表别名|工作区:该参数指定所要确定的表的别名或所在工作区,即您可以在一个工作区去得到另一工作区的表的记录数,而另一工作区的
表可用其别名或工作区号来指定。该参数如省略,隐含为当前工作区,如有该参数的话,别名或工作区只选一个。】
找到记录(found())
【如果locate、continue、seek等查找记录的命令成功(即找到了记录),该函数返回“真”(.t.),否则返回“假”(.f.)。
语法:
found([表别名|工作区])
返回值的类型:
逻辑型
参数:
表别名|工作区:该参数指定所要确定的表的别名或所在工作区,即您可以在一个工作区知道另一个工作区上次查找记录是否找到,而另一
工作区的表可用其别名或工作区号来指定。该参数如省略,隐含为当前工作区,如有该参数的话,别名或工作区只选一个。
举例:
locate for 姓名='庄稼'
?found()
如找到记录,显示结果为.t.,否则为.f.。】
表结尾(eof())
【确定记录指针是否在表的结尾处。
语法:
eof([表别名|工作区])
返回值的类型:
逻辑型
参数:
表别名|工作区:该参数指定所要确定的表的别名或所在工作区,即您可以在一个工作区知道另一个工作区表的指针是否在尾部,而另一工
作区的表可用其别名或工作区号来指定。该参数如省略,隐含为当前工作区,如有该参数的话,别名或工作区只选一个。
备注:
这里所说的结尾处,并非是指最后一个记录,而是最后一个记录的后面,即没有记录。
举例:
go bottom
skip
?eof()
显示结果为.t.。
如果没有skip,仅仅走到最后一个记录,返回的将是.f.,而必须再往下跳一下才会是“真”结尾。
此时如输入命令:display,则没有记录显示。这一点与bof()函数不同。】
表开头(bof())
【确定记录指针是否在表的开头。
语法:
bof([表别名|工作区])
返回值的类型:
逻辑型
参数:
表别名|工作区:该参数指定所要确定的表的别名或所在工作区,即您可以在一个工作区知道另一个工作区表的指针是否在开头,而另一工
作区的表可用其别名或工作区号来指定。该参数如省略,隐含为当前工作区,如有该参数的话,别名或工作区只选一个。
备注:
这里所说的开头,并非是指第一个记录,而是第一个记录的前面。
举例:
go top
skip -1
?bof()
显示结果为.t.。
如果没有skip -1,仅仅走到第一个记录,返回的将是.f.,而必须再往上跳一下才会是“真”开头。
但与eof()函数不同,此时如输入命令display,将显示第一条记录。】
消除后续空格(trim())
【将字符表达式的后续空格全部删除,并将结果返回。
语法:
trim(字符表达式)
返回值的类型:
字符型
参数:
字符表达式:指定的字符表达式,该函数将删除其后续空格。
备注:
trim()函数等同于rtrim()函数。
举例:
如表的“姓名”字段长度为10,当前内容为“庄稼”,那么如下语句:
? 姓名+'先生:'
其显示结果是:
庄稼 先生:
而语句:
? trim(姓名)+'先生:'
显示结果是:
庄稼先生】
消除前导空格(ltrim())
【将字符表达式前面的空格全部删除,并将结果返回。
语法:
trim(字符表达式)
返回值的类型:
字符型
参数:
字符表达式:指定的字符表达式,该函数将删除其后续空格。
举例:
在讲str()函数时我们举过一个例,即把一个字符与一个数值相加时,应采用如下形式:
? '季度'+str(1,1)
但是当我们没有办法确定这个数值的位数时,这个办法就行不通了,您不可能规定它的长度只能是1或2等等。那么怎么办呢,采用ltrim()
函数可以解决了:
? '项目'+ltrim(str(sz))
这里假设事先已有一个数值存入了sz变量,但不知道这个数值是几,也就更不知道有几位数,那么在隐含状态下,str()函数将把sz转换为
长度为10的字符,其前面可能有若干空格,通过ltrim()函数的处理,不论前面有多少空格,都可以得到如下结果(假设数值是15):
项目15】