SQL语句函数大全

SQL语句函数大全

转载 
2013年08月28日 15:13:26

  • 720

二、字符中操作函数
UPPER(S) 小写字母 UPPER(abc) ABC
LOWER(S) 大写字母 LOWER(ACD) acd
LEN(S) 求字符串的长度 LEN(“中国1号”) 7
AT(S1,S2) 在字符串S2,找字符串S1 AT(“H”,”CHINA”) 2
SUBSTR(S,I,N) 在S字符串中的第I个字符起取N个字符 SUBSTR(‘TECHNOLO’,3,3) CHN
LEFT(S,N) 从字符串S左边取N个字符 LEFT(“中国人”,4) 中国
RIGHT(S,N) 从字符串S右边取N个字符 S=‘12345’
RIGHT(S,3) 345
SPACE(N) 生成N个空格 “合计”+SPACE(2)+”123” 合计123
TRIM(S) 消除字符串尾部空格 TRIM(“姓名 “) 姓名
ALLTRI(S) 消除字符串中所有空格 ALLTRIM(”李 丽”) 李丽
STUFF(S1,N1,N2,S2) 用字符串S2替换S1中第N1个字符起的N2个字符 STUFF(”NOW”,2,1,”E”) NEW
& 宏替换 P=“G2”
USE &P USE G2

二、常用函数
1、数学函数
函数 用途
ABS(<数值表达式>) 绝对值,|x|
CEILING(<数值表达式>) >=自变量的最小整数
EXP(<数值表达式>) 对基E的幂,e=2.71828
FLOOR(<数值表达式>) <=自变量的最大整数
INT(<数值表达式>) 取整(舍尾)自变量
LOG(<数值表达式>) 自变量的自然对数,ln x
LOG10(<数值表达式>) 自变量的普通对数,lg x
MAX(<表达式1>,<表达式2>)两个值的最大值
MIN(<表达式1>,<表达式2>)两个值的最小值
MOD(<数值表达式1>,<数值表达式2>)求余数
RAND([<数值表达式1>]) 返回伪随机数
ROUND(<数值表达式1>,<数值表达式2>)四舍五入第一个自变量
SIGN(<数值表达式>) 自变量的符号
SQRT(<数值表达式>) 平方根(正根)
2、字符串操作函数
函数 用途
&<内存变量> 用于代替内存变量内容
LEN(<字符串表达式>) 返回字符串表达式的字符个数
SPACE(<数值表达式>) 生成空格
SUBSTR(<字符串表达式>,<数值表达式n>[,<数值表达式L>])求子字符串,从指定的字符串表达式第n个开始,总长为L的字符串
LOWER(<字符串表达式>) 将字符串字母转换成小写字母
UPPER(<字符串表达式>) 将字符串字母转换成大写字母
TRIM(<字符串表达式>) 删除字符串尾空格
ASC(<字符串表达式>)返回字符串表达式最左边的第一个字符的ASCII码
CHR(<数值表达式>) 将数值表达式转换成字符
AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式n>])
确定字符串表达式1在字符串表达式2中的位置,n为字符串表达式第几次出现
STR(<数值表达式>[,<数值表达式L>][,<数值表达式n>)将数值转换为字符串,L为数值表达式总长,n为小数位数
VAL(<字符串表达式>) 将数字字符串转换为数字
TYPE(<表达式>) 检测表达式值的数据类型
LTRIM(<字符串表达式>) 删除字符串左部空格
RTRIM(<字符串表达式>) 删除字符串右部空格
LEFT(<字符串表达式>,<数值表达式n>)取字符串左边部分字符,n为返回的字符个数
RIGHT(<字符串表达式>,<数值表达式n>)取字符串右边部分字符,n从右边截取字符个数
MONTH(<日期型表达式>|<日期时间型表达式>)从日期查月份函数
CMONTH(<日期型表达式>|<日期时间型表达式>)由日期查月份名函数
DAY(<日期型表达式>|<日期时间型表达式>)从日期查当月的日函数
DOW(<日期型表达式>|<日期时间型表达式>[,<数值表达式>])由日期查星期函数
5、显示、打印位置函数
函数 用途
ROW() 判断光标行位置函数
COL() 判断光标列位置函数
INKEY([<数值表达式>])检测用户所击键对应的ASCII码函数,数值表达式以秒为单位等待击键的时间
6、其他函数
函数 用途
DISKSPACE() 返回默认磁盘驱动器中可用字节数函数
OS() 检测操作系统名称的函数
VERSION() 返回VFP版本号的函数打开并修改数据表中的字段:
(1) CHANGE [FIELDS 字段名列表]
(2)EDIT[FIELDS字段名列表]这两个命令的功能相似,可选子句较多(详见手册)。数据表改名:RENAME TABLE tablename1 TO tablename2 其中数据表tablename1必须存在且未打开。
RENAME VIEW viewname1 TO viewname2——视图改名 其中数据表tablename1必须存在且未打开。
将当前表与另一表之间建立关联:
SET RELATION TO [表达式1 INTO 工作区号1 | 表别名1];[, 表达式2 INTO 工作区号2 | 表别名2] [, …] 建立关联的两个表必须事先已按关联表达式进行索引排序。

在当前表与另一表之间建立一对多关联:SET SKIP TO表别名1[, 表别名2]
消除当前表与另一表之间的关联:SET RELATION OFF INTO 工作区号 | 表别名
清除当前记录中字段的数据:

五、文件管理(文件和文件夹的复制、创建和删除)    
从当前表复制出表或其它类型的文件(表须打开)
COPY TO filename [FIELDS 字段名列表] [常用子句] [其它子句] 如果没有指定类型,则复制一个与当前的表相同的数据表。
复制表的结构:COPY STRUCTURE TO filename [FIELDS字段名列表]
复制任何文件: COPY FILE 源文件 TO 目的文件
如果用此命令复制表,表须关闭
六、数据的复制与传送    
单个记录与数组间的数据传送 
当前记录 → 数组或内存变量:
SCATTER [FIELDS字段名列表][MEMO]TO 数组名 [BLANK] | MEMVAR [BLANK]
其中[BLANK]表示建立一个空元素的数组。如果用MEMVAR子句,则表示将各字段的值复制到同名同类型的内存变量。
如果包含MEMO子句,则备注字段一起复制。
数组或内存变量 → 当前记录 
GATHER FROM 数组名 | MEMVAR [FILEDS字段名列表] [MEMO]
用同名的内存变量或数组中的第一行置换当前记录,如果数组为多行的二维数组,也只用第一行。
成批记录与数组间的数据传送 
表 → 数组:
COPY TO ARRAY arrayname [常用子句]
数组 → 表:
(1) APPEND FROM ARRAY arrayname [ FOR 条件][FIELDS字段名列表]
用内存数组的值加在数据表的尾部,数据中的一行对应一个新记录,一列对应一个字段。
(2) REPLACE FROM ARRAY数组名 [常用子句]
用内存数组的值更新数据表中符合条件的记录。
查询结果 → 数组:
SELECT …… INTO ARRAY arrayname
将SQL SELECT语句的查询结果传给数组arrayname。这里“SELECT ……”可为各种形式的SELECT查询语句。
内存变量赋值:
STORE 表达式 TO 变量名

变量名=表达式
七、排序与索引   

将当前表排序后建立一个新数据表:SORT TO 文件名 ON 字段名1 [/A | /D] ;[/C] [ 字段名2 [/A | /D] [/C] …];

[ASCENDING | DESCENDING] [常用子句];

建立单索引文件:

INDEX ON 表达式 TO 单索引文件名;

[FOR<条件>] [UNIQUE] [COMPACT];

[ASCENDING][DESCENDING][ADDITIVE]

建立复合索引文件:

INDEX   ON 表达式 TO TAG 索引名 [OF 复合索引文件名];

[FOR 条件] [UNIQUE|CANDIDATE];

[ASCENDING][DESCENDING][ADDITIVE]

使用索引文件:

打开表时将索引文件一并打开,USE命令带INDEX子句:

USE tablename|? [IN 工作区号][INDEX 索引文件名列表|?]
给当前表打开一个或多个索引文件:SET INDEX TO[索引文件名列表|?];[ORDER 索引文件名序号|索引文件名|[TAG]索引名 [OF 复合索引文件名] ;[ASCENDING][DESCENDING]]

指定字符字段在排序或索引时的整理系列:SET COLLATE TO 整理系列对于汉字字符串,“整理系列”可以是“Machine”、“PinYin”或“Stroke”三者之一(必须带引号),分别表示按机器码、拼音和笔划排序。

八、查找和定位    
顺序查找当前表中满足条件的第一条记录:
LOCATE FOR 条件下[范围][WHILE条件]
找到后将记录指针定位在满足条件的第一条记录,且函数FOUND()的返回值为真。
在索引表中查找:
FIND cExpr
其中cExpr为字符串表达式。如果找到,则记录指针定位在满足条件的第一条记录,且函数FOUND()的返回值为真;查找失败时,FOUND()的返回值为假,记录指针定位在文件尾。
在索引表中查找:SEEK eExpr;[ORDER 索引文件名序号|索引文件名|[TAG]索引名 [OF 复合索引文件名] ;[ASCENDING][DESCENDING]];[IN 工作区号|表别名]
如果找到,则记录指针定位在满足条件的第一条记录,且为真;查找失败时,FOUND()的返回值为假,记录指针定位在文件尾。
继续查找:CONTINUE
用LOCATE、 FIND或 SEEK查找到一条记录后,用CONTINUE继续查找下一条。
用以上查找命令LOCATE、 FIND、SEEK和CONTINUE的查找结果,都可以通过函数FOUND()的返回值反映出来。
九、统计计算    
统计表中的记录数:COUNT [范围] [FOR 条件] [WHILE 条件][TO内存变量名]
统计满足条件的记录数,显示记录数或将结果赋给内存变量名。
求和:SUM [表达式列表];[范围] [FOR 条件] [WHILE 条件][TO内存变量名|TO ARRAY 数组名]
求平均值:AVERAGE [表达式列表];[范围] [FOR 条件] [WHILE 条件][TO内存变量名|TO ARRAY 数组名]
对当前表中数值型字段进行分组求和:TOTAL TO tablename ON 字段名[常用子句]
其中tablename为存放结果的表文件名,字段名为确定求和分组的字段。
计算:CALCULATE 表达式列表;[范围] [FOR 条件] [WHILE 条件][TO内存变量名|TO ARRAY 数组名]

其中表达式列表可以是如下函数的任意组合:
AVG(nExpr), CNT(), MAX(eExpr), MIN(eExpr), NPV(nExpr1, nExpr2,…),
STD(nExpr),SUM(nExpr),VAR(nExpr)其中nExpr为数值表达式,eExpr为任意表达式。

定义数组:DECLARE | DIMENSION 数组名(下标1,下标2,……)
定义过程:PROCEDURE 过程名PARAMETERS 参数表……
RETURN [TO MASTER | TO 程序名]
定义函数:FUNCTION 函数名PARAMETERS 参数表……
RETURN 表达式
定义公共变量:PUBLIC 变量名列表
PUBLIC [ARRAY] 数组名1(行1,列1)[, 数组名2(行2,列2) [,…]]
定义私有变量PRIVATE变量名列表PRIVATE ALL[LIKE | EXCEPT 通配符]
定义局部变量LOCAL 变量名列表
LOCAL [ARRAY] 数组名1(行1,列1)[, 数组名2(行2,列2) [,…]]
显示各种信息:
设置是否显示日期中的世纪:SET CENTURY ON | OFF
设置显示的小数位数:SET DECIMALS TO 小数位数
设置是否处理带删除标记的记录:SET DELETED ON | OFF
如果设置为ON,则不处理带删除标记的记录。
设置是否显示命令的结果:SET TALK ON | OFF
设置文件的搜索路径:SET PATH TO 路径
设置传给子程序或自定义函数的参数是按值还是按引用方式传递:
SET UDFPARMS TO VALUE | REFERENCE设置为TO VALUE,表示按值传递。
执行一个外部命令或程序:RUN 命令或程序
在指定的位置显示或打印:@行,列 SAY …
在指定的位置显示表达式的值,并等待用户输入,将输入值赋给一变量:@行,列 SAY 表达式 GET 变量名 [DEFAULT 表达式]READ
例:@2,2 say “请输入金额: ” get nMoney default 50Read
此例先在第2行、第2列显示”请输入金额: “,等待用户输入一个数值,将用户输入值赋给变量nMoney,如果用户不输入数值(直接按回车),则将50赋给nMoney。请注意在下一行不能漏掉“Read”。
ALL: 命令对表中所有记录起作用,即执行时从首记录到末记录,最记录指针停在数据库的末尾。 
NEXT <expN> 命令作用于从当前记录开始到当前记录后<expN>条记录为止的范围内的记录,最后记录指针指向作用范围内的最后一条记录处。NEXT 1表示仅作用于当前记录。 
Record <expN> 命令作用于记录号为<expN>的记录。 
TEST 命令作用范围从当前记录开始到表的最后一个记录为止 命令中的FOR子句只作用于满足条件的记录。

    原文作者:SQL
    原文地址: https://blog.csdn.net/zzhangchl/article/details/79105615
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞