数据库函数
- 格式:doc
- 大小:34.50 KB
- 文档页数:3
数据库MySQL常用函数大全一、数学函数ABS(x) 返回x的绝对值BIN(x)返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x)返回值e(自然对数的底)的x次方FLOOR(x)返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,...,xn) 返回集合中最小的值LN(x) 返回x的自然对数LOG(x,y)返回x的以y为底的对数MOD(x,y) 返回x/y的模(余数)PI()返回pi的值(圆周率)RAND()返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
ROUND(x,y)返回参数x的四舍五入的有y位小数的值SIGN(x) 返回代表数字x的符号的值SQRT(x) 返回一个数的平方根TRUNCATE(x,y) 返回数字x截短为y位小数的结果二、聚合函数(常用于GROUP BY从句的SELECT查询中)AVG(col)返回指定列的平均值COUNT(col)返回指定列中非NULL值的个数MIN(col)返回指定列的最小值MAX(col)返回指定列的最大值SUM(col)返回指定列的所有值之和GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果三、字符串函数ASCII(char)返回字符的ASCII码值BIT_LENGTH(str)返回字符串的比特长度CONCAT(s1,s2...,sn)将s1,s2...,sn连接成字符串CONCAT_WS(sep,s1,s2...,sn)将s1,s2...,sn连接成字符串,并用sep字符间隔INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果FIND_IN_SET(str,list)分析逗号分隔的list列表,如果发现str,返回str在list中的位置LCASE(str)或LOWER(str) 返回将字符串str中所有字符改变为小写后的结果LEFT(str,x)返回字符串str中最左边的x个字符LENGTH(s)返回字符串str中的字符数LTRIM(str) 从字符串str中切掉开头的空格POSITION(substr,str) 返回子串substr在字符串str中第一次出现的位置QUOTE(str) 用反斜杠转义str中的单引号REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果REVERSE(str) 返回颠倒字符串str的结果RIGHT(str,x) 返回字符串str中最右边的x个字符RTRIM(str) 返回字符串str尾部的空格STRCMP(s1,s2)比较字符串s1和s2TRIM(str)去除字符串首部和尾部的所有空格UCASE(str)或UPPER(str) 返回将字符串str中所有字符转变为大写后的结果四、日期和时间函数CURDATE()或CURRENT_DATE() 返回当前的日期CURTIME()或CURRENT_TIME() 返回当前的时间DATE_ADD(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH); DATE_FORMAT(date,fmt) 依照指定的fmt格式格式化日期date值DATE_SUB(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH); DAYOFWEEK(date) 返回date所代表的一星期中的第几天(1~7)DAYOFMONTH(date) 返回date是一个月的第几天(1~31)DAYOFYEAR(date) 返回date是一年的第几天(1~366)DAYNAME(date) 返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE); FROM_UNIXTIME(ts,fmt) 根据指定的fmt格式,格式化UNIX时间戳tsHOUR(time) 返回time的小时值(0~23)MINUTE(time) 返回time的分钟值(0~59)MONTH(date) 返回date的月份值(1~12)MONTHNAME(date) 返回date的月份名,如:SELECTMONTHNAME(CURRENT_DATE);NOW() 返回当前的日期和时间QUARTER(date) 返回date在一年中的季度(1~4),如SELECTQUARTER(CURRENT_DATE);WEEK(date) 返回日期date为一年中第几周(0~53)YEAR(date) 返回日期date的年份(1000~9999)一些示例:获取当前系统时间:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);返回两个日期值之间的差值(月数):SELECT PERIOD_DIFF(200302,199802);在Mysql中计算年龄:SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age FROM employee;这样,如果Brithday是未来的年月日的话,计算结果为0。
excel的数据库函数
Excel提供了一些强大的数据库函数,可以帮助用户在数据处理和分析方面更加高效。
其中一些常用的数据库函数包括:
1. VLOOKUP函数,VLOOKUP函数用于在数据表中查找某个值,并返回该值所在行的指定列的数值。
这个函数在数据表的查找和匹配中非常有用。
2. HLOOKUP函数,HLOOKUP函数与VLOOKUP函数类似,但是它是水平查找,用于在数据表的第一行中查找某个值,并返回该值所在列的指定行的数值。
3. INDEX函数,INDEX函数可以根据给定的行号和列号返回数据表中的数值。
这个函数在需要根据特定条件来获取数据时非常有用。
4. MATCH函数,MATCH函数用于在数据表中查找某个值,并返回该值所在位置的相对位置。
这个函数通常与其他函数一起使用,用于数据的定位和匹配。
5. SUMIF函数,SUMIF函数可以根据指定的条件对数据表中的数值进行求和。
这个函数在统计和汇总数据时非常有用。
6. COUNTIF函数,COUNTIF函数可以根据指定的条件对数据表中的数值进行计数。
这个函数在统计数据出现次数时非常有用。
这些数据库函数可以帮助用户在Excel中更加高效地处理和分析数据,提高工作效率。
当然,除了上述列举的函数之外,Excel 还提供了其他许多数据库函数,用户可以根据自己的需求选择合适的函数来完成数据处理和分析的工作。
希望这些信息能够对你有所帮助。
大全数据库函数大全VisualFoxPro数据库函数ADATABASES()将所有打开数据库的名称和路径放到内存变量数组中ADBOBJECTS()把当前数据库中的命名连接名、关系名、表名或sQL视图名放到一个内存变量数组中AFIELDS()把当前表的结构信息存放在一个数组中,并且返回表的字段数ALIAS()返回当前表或指定工作区衰的别名ASESSIONS()创建一个已存在的数据工作期ID数组ATAGINFO()创建一个包含索引和键表达式的名字、数量和类型信息的数组AUSED()将一个数据工作期中的表别名和工作区存入内存变量数组BOF()确定当前记录指针是否在表头CANDIDATE()判断索引是否为候选索引CDX()根据指定的索引位置编号,返回打开的复合索引(.CDX)文件名称CPDBP()返回一个打开表所使用的代码页CREATEOFFLINE()由已存在的视图创建一个游离视图CURSORGETPROP()返回VisualFoxPro表或临时表的当前属性设置CURSORSETPROP()指定VisualFoxPro表或临时表的属性设置CURSORTOXML()转换VisualFoxPro临时表为XML文本CURVAL()从磁盘上的表或远程数据源中直接返回字段值DBC()返回当前数据库的名称和路径DBF()返回指定工作区中打开的表名,或根据表别名返回表名DBSETPROP()给当前数据库或当前数据库中的字段、命名连接、表或视图设置一个属性DELETED()返回一个表明当前记录是否标有删除标记的逻辑值DESCENDING()是否用DESCENDING关键字创建了一个索引标识DROPOFFLINE()放弃对游离视图的所有修改,并把游离视图放回到数据库中EOF()确定记录指针位置是否超出当前表或指定表中的最后一个记录FCOUNT()返回衰中的字段数目FIELD()根据编号返回表中的字段名FILTER()返回SETFILTER命令中指定的表筛选表达式FLDLIST()对于SETmELDS命令指定的字段列表,返回其中的字段和计算结果字段表达式FLOCK()尝试锁定当前表或指定表FOR()返回一个己打开的单项索引文件或索引标识的索引筛选表达式FOUND()如果CONTINUE、FIND、LOCATE或SEEK命令执行成功,函数的返回值为"真"FSIZE()以字节为单位,返回指定字段或文件的大小GETFLDSTATE()返回一个数值,标明表或临时表中的字段是否已被编辑,或是否有追加的记录,或者记录的删除状态是否已更改GETNEXTMODIFIED()返回一个记录号,对应于缓冲表或临时表中下一个被修改的记录HEADER()返回当前或指定表文件的表头所占的字节数IDXCOLLATE()返回索引或索引标识的排序序列INDBC()如果指定的数据库对象在当前数据库中,则返回"真"(.T.)INDEXSEEK()在一个索引表中搜索第一次出现的某个记录ISEXCLUSIVE()判断一个表或数据库是以独占方式打开的ISFLOCKED()返回表的锁定状态ISREADONLY()判断是否以只读方式打开表ISRLOCKED()返回记录的锁定状态KEY()返回索引标识或索引文件的索引关键字表达式KEYMATCH()在索引标识或索引文件中搜索一个索引关键字LOOKUP()在表中搜索字段值与指定表达式匹配的第一个记录LUPDATE()返回一个表最近一次更新的日期MDX()根据指定的索引编号返回打开的.CDX复合索引文件名MEMLINES()返回备注字段中的行数MLINE()以字符串形式返回备注字段中的指定行NDX()返回为当前表或指定表打开的某一索引(JDX)文件的名称ORDER()返回当前表或指定表的主控索引文件或标识PRIMARY()检查索引标识,如果为主索引标识,就返回"真"(.T.)RECCOUNT()返回当前或指定表中的记录数目RECNO()返回当前表或指定表中的当前记录号RECSIZE()返回表中记录的大小(宽度)REFRESH()在可更新的SQL视图中刷新数据RELATION()返回为给定工作区中打开的表所指定的关系表达式SEEK()在一个已建立索引的表中搜索一个记录的第一次出现位置SELECT()返回当前工作区编号或未使用工作区的最大编号SETFLDSTATE()为表或临时表中的字段或记录指定字段状态值或删除状态值SQLCANCEL()请求取消一条正在执行的SQL语句SQLCOLUMNS()把指定数据源表的列名和关于每列的信息存储到一个VisualFoxPro临时表中SQLCOMMIT()提交一个事务SQLCONNECT()建立一个指向数据源的连接SQLDISCONNECT()终止与数据源的连接SQLEXEC()将一条SQL语句送入数据源中处理SQLGETPROP()返回一个活动连接的当前设置或默认设置SQLMORERESULTS()如果存在多个结果集合,则将另一个结果集合复制到VisualFoxPro临时表中SQLPREPARE()在使用SQLEXEC()执行远程数据操作前,可使用本函数使远程数据为将要执行的命令做好准备SQLROLLBACK()取消当前事务处理期间所做的任何更改SQLSETPROP()指定一个活动连接的设置SQLSTRINGCONNECT()使用一个连接字符串建立和数据源的连接SQLTABLES()把数据源中的表名存储到VisualFoxPro临时表中SYS(14)索引表达式SYS(21)控制索引编号SYS(22)控制标识名或索引名SYS(2011)返回当前工作区中记录锁定或表锁定的状态SYS(2012)返回表的备注字段块大小SYS(2021)筛选索引表达式SYS(2029)返回与表类型对应的值SYS(3054)Rushmore优化等级·TAG()返回打开的.CDX多项复合索引文件的标识名,或者返回打开的.IDX单项索引文件的文件名TAGCOUNT()返回复合索引文件(.CDX)标识以及打开的单项索引文件(.IDX)的数目TAGNO()返回复合索引文件(.CDX)标识以及打开的单项索引(.IDX)文件的索引位置TARGET()返回一个表的别名,该表是SETRELATION命令的INTO子句所指定关系的目标UNIQUE()用于测试索引是否以惟一性方式建立UPDATED()用于测试在最近的READ命令中,数据是否已被修改USED()确定是否在指定工作区中打开了一个表XMLTOCURSOR()转换XML文本到VisualFoxPro游标或表----------------------------------------------Visual FoxPro日期和时间函数CTOD()把字符表达式转换成日期表达式。
数据库聚集函数数据库聚集函数是数据库中常用的一种函数,它用于统计数据表中某一列的数据信息。
本文将介绍常用的数据库聚集函数及其用法。
1. COUNT函数COUNT函数是最常用的聚集函数之一,它用于计算数据表中某一列的记录数。
语法如下:COUNT(column_name)其中,column_name是要统计记录数的列名。
如果不指定列名,则统计整个数据表的记录数。
COUNT函数返回值为一个整数,表示记录数。
2. SUM函数SUM函数用于计算数据表中某一列的数值总和。
语法如下:SUM(column_name)其中,column_name是要计算总和的列名。
SUM函数返回值为一个数值,表示总和。
3. AVG函数AVG函数用于计算数据表中某一列的数值平均值。
语法如下:AVG(column_name)其中,column_name是要计算平均值的列名。
AVG函数返回值为一个数值,表示平均值。
4. MAX函数MAX函数用于计算数据表中某一列的最大值。
语法如下:MAX(column_name)其中,column_name是要计算最大值的列名。
MAX函数返回值为一个数值,表示最大值。
5. MIN函数MIN函数用于计算数据表中某一列的最小值。
语法如下:MIN(column_name)其中,column_name是要计算最小值的列名。
MIN函数返回值为一个数值,表示最小值。
除了以上五种常用的聚集函数外,还有一些其他的聚集函数,例如:6. VARIANCE函数VARIANCE函数用于计算数据表中某一列的方差。
语法如下:VARIANCE(column_name)其中,column_name是要计算方差的列名。
VARIANCE函数返回值为一个数值,表示方差。
7. STDDEV函数STDDEV函数用于计算数据表中某一列的标准差。
语法如下:STDDEV(column_name)其中,column_name是要计算标准差的列名。
STDDEV函数返回值为一个数值,表示标准差。
Excel的14个常用的数据库函数1. DVARP函数:用于计算总体方差。
语法:DVARP(database,field,criteria)参数:database表示要在其中计算方差的数据范围,field表示要计算方差的字段,criteria 是一个可选的筛选条件。
2. GETPOVOTDATA函数:用于从数据透视表中获取特定单元格的值。
语法:GETPOVOTDATA(data_field, pivot_table, [field1, item1], [field2, item2], …)参数:data_field表示从数据透视表中返回的数据区域,pivot_table表示要检索数据的数据透视表,field1, item1等表示要使用的筛选条件。
3. DVAR函数:用于计算样本方差。
语法:DVAR(database,field,criteria)参数:database表示要在其中计算方差的数据范围,field表示要计算方差的字段,criteria 是一个可选的筛选条件。
4. DSTDEVP函数:用于计算总体标准差。
语法:DSTDEVP(database,field,criteria)参数:database表示要在其中计算标准差的数据范围,field表示要计算标准差的字段,criteria是一个可选的筛选条件。
5. DSUM函数:用于计算数据范围中数值的总和。
语法:DSUM(database,field,criteria)参数:database表示要在其中计算总和的数据范围,field表示要计算的字段,criteria 是一个可选的筛选条件。
6. DPRODUCT函数:用于计算数据范围中数值的乘积。
语法:DPRODUCT(database,field,criteria)参数:database表示要在其中计算乘积的数据范围,field表示要计算的字段,criteria 是一个可选的筛选条件。
7. DSTDEV函数:用于计算样本标准差。
高斯数据库时间函数
高斯数据库支持以下时间函数:
1. NOW():返回当前的日期和时间。
2. DATE():从日期时间值中提取日期。
3. TIME():从日期时间值中提取时间。
4. MONTH():从日期时间值中提取月份。
5. YEAR():从日期时间值中提取年份。
6. DAY():从日期时间值中提取天数。
7. HOUR():从日期时间值中提取小时数。
8. MINUTE():从日期时间值中提取分钟数。
9. SECOND():从日期时间值中提取秒数。
10. TIMESTAMP():将日期时间值转换为UNIX时间戳形式。
11. FROM_UNIXTIME():将UNIX时间戳转换为日期时间值形式。
12. ADDDATE():添加一个日期时间值的指定数量的年、月和日。
13. SUBDATE():从一个日期时间值中减去指定数量的年、月和日。
14. DATE_FORMAT():将日期时间值格式化为指定的形式。
15. STR_TO_DATE():将字符串转换为日期时间值形式。
MySQL数据库常用函数大全字符串函数字符串函数是最常用的一种函数,MySQL支持很多种字符串函数。
下列是MySQL支持的字符串函数表。
1、LOWER(str) 和UPPER(str)函数:用于转换大小写。
2、CONCAT(s1,s2…sn): 把传入的参数拼接成一个字符串。
任何和NULL进行字符串拼接的结果都是NULL。
3、LEFT(str,x) 和RIGHT(str,x) 函数:分别返回字符串最左边的x个字符和最右边的x个字符。
如果第二个参数是NULL,那么将不会返回任何字符串。
4、INSERT(str,x,y,instr): 将字符串str 从指定x的位置开始,取y个长度的字串替换为instr。
5、LTRIM(str)和RTRIM(str)分别表示去掉字符串str左侧和右侧的空格。
6、REPEAT(str,x)函数:返回str 重复x次的结果。
7、TRIM(str)函数,用于去掉目标字符串的空格。
8、SUBSTRING(str,x,y)函数,返回从字符串str中第x位置起y个字符长度的字符串。
9、LPAD(str,n,pad)和RPAD(str,n,pad)函数,用字符串pad对str左边和右边进行填充,直到长度为n个字符长度。
10、STRCMP(s1,s2)用于比较字符串s1和s2的ASCII值大小。
如果s1<s2,则返回-1,如果s1=s2,则返回0,如果s1>s2,则返回1。
11、REPLACE(str,a,b),用字符串b替换字符串str中所有出现的字符串a。
数值函数MySQL支持数值函数,这些函数能够处理很多数值运算。
1、A B S ( x )函数,返回x 的绝对值2、C E I L ( x )函数,返回大于x 的整数。
、M O D ( x , y ),对x 和y 进行取模操作。
、R O U N D ( x , y )返回x 四舍五入后保留位小数的值,如果是整数,那么y 为就是0,如不指定,那么y 默认也是0。
数据库常用函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的对数S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 18.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -1----------数学函数14.圆周率S:SELECT PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道) DEGREES:弧度-〉角度RADIANS:角度-〉弧度---------数值间比较18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl--------数值间比较21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual23.子串位置--返回3S:select CHARINDEX('s','sdsq',2) valueO:selectINSTR('sdsq','s',2) value from dual23.模糊子串的位置--返回2,参数去掉中间%则返回7S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四霾问 刂瞥鱿执问?BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替返回aijklmnefS:SELECT STUFF('abcdef', 2, 3, 'ijklmn') valueO:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.大小写转换lower,upper29.单词首字母大写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第一个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第一个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发音相似性比较(这两个单词返回值一样,发音相同)S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dualSQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差返回0-4,4为同音,1最高--------------日期函数35.系统时间S:select getdate() valueO:select sysdate value from dual36.前后几日直接与整数相加减37.求日期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual38.求时间S:select convert(char(8),getdate(),108) valueO:select to_char(sysdate,'hh24:mm:ss') value from dual39.取日期时间的其他部分S:DATEPART 和DATENAME 函数(第一个参数决定)O:to_char函数第二个参数决定参数---------------------------------下表需要补充year yy, yyyyquarter qq, q (季度)month mm, m (m O无效)dayofyear dy, y (O表星期)day dd, d (d O无效)week wk, ww (wk O无效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S无效)minute mi, n (n O无效)second ss, s (s O无效)millisecond ms (O无效)----------------------------------------------40.当月最后一天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某一天(比如星期日)S:不知道O:SELECT Next_day(sysdate,7) vaule FROM DUAL;42.字符串转时间S:可以直接转或者select cast('2004-09-08'as datetime) value O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;43.求两日期某一部分的差(比如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接用两个日期相减(比如d1-d2=12.3)SELECT (d1-d2)*24*60*60 vaule FROM DUAL;44.根据差值求新的日期(比如分钟)S:select dateadd(mi,8,getdate()) valueO:SELECT sysdate+8/60/24 vaule FROM DUAL;45.求不同时区时间S:不知道O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;-----时区参数,北京在东8区应该是Ydt-------AST ADT 大西洋标准时间BST BDT 白令海标准时间CST CDT 中部标准时间EST EDT 东部标准时间GMT 格林尼治标准时间HST HDT 阿拉斯加—夏威夷标准时间MST MDT 山区标准时间NST 纽芬兰标准时间PST PDT 太平洋标准时间YST YDT YUKON标准时间。
数据库函数类型数据库函数类型数据库函数是一种可重复使用的代码块,它定义在数据库中,用于执行一些特定的操作或计算。
它们可以是内置函数,也可以是用户定义的函数。
数据库函数类型有很多种,常见的包括以下几类:1. 聚合函数聚合函数用于计算某些列的统计值,如总数、平均值、最大值、最小值等。
常见的聚合函数有SUM、AVG、MAX、MIN等。
例如,我们可以使用以下SQL语句来计算某个表中某列的总和:SELECT SUM(column_name) FROM table_name;2. 字符串函数字符串函数用于处理字符或字符串类型的数据。
它们可以用于截取、替换、拼接、转换字符串等操作。
常见的字符串函数有CONCAT、SUBSTR、UPPER、LOWER、REPLACE等。
例如,我们可以使用以下SQL语句来将某个表中的字符串字段全部转换为大写:SELECT UPPER(column_name) FROM table_name;3. 数学函数数学函数用于执行数学计算,如求绝对值、平方、开方、自然对数等。
常见的数学函数有ABS、SQR、SIN、COS、LOG等。
例如,我们可以使用以下SQL语句来计算某个表中某列的平方值:SELECT SQR(column_name) FROM table_name;4. 日期时间函数日期时间函数用于处理日期和时间类型的数据。
它们可以用于格式化、计算、比较日期和时间。
常见的日期时间函数有DATE_FORMAT、DATEDIFF、NOW、TIMESTAMPDIFF等。
例如,我们可以使用以下SQL语句来计算某个表中某列的日期差:SELECT DATEDIFF(column_name1, column_name2) FROM table_name;在设计数据库时,我们可以使用函数来定义计算、检查和转换数据值的规则。
通过函数,我们可以避免重复性的数据转换和计算,提高代码的可重用性和可维护性。
因此,了解数据库函数类型和使用场景是非常重要的。
DECLARE @g geometry;
DECLARE @h geometry;空间数据库操作函数
1、STArea() 面积计算
2、STBuffer()缓冲区计算
3、STCrosses()如果geometry实例与另一个geometry实例相交,则返回1。
否则,返回0
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 2 0)', 0);
SET @h = geometry::STGeomFromText('LINESTRING(0 0, 2 2)', 0);
SELECT @g.STCrosses(@h);
4、STDifference()返回一个对象,该对象表示来自一个geometry实例的点,这些点在另一个geometry 实例中不存在
SET @g = geography::STGeomFromText('POL YGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
SET @h = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SELECT @g.STDifference(@h).ToString();
5、STDisjoint()如果一个geography 实例与另一个geography 实例在空间上不相联,则返回1。
否则,返回0
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.STDisjoint(@h)
6、STDistance()返回一个geometry 实例中的点与另一个geometry 实例中的点之间的最短距离
SET @g = geometry::STGeomFromText('POL YGON((0 0, 2 0, 2 2, 0 2, 0 0))', 0);
SET @h = geometry::STGeomFromText('POINT(10 10)', 0);
SELECT @g.STDistance(@h
7、STEnvelope()返回实例的最小轴对齐边界矩形
SET @g = geometry::STGeomFromText('LINESTRING(0 0, 2 3)', 0);
SELECT @g.STEnvelope().ToString()
8、STIntersection()返回一个对象,该对象表示一个Geometry 实例与另一个Geometry 实例的交点
SET @g = geography::STGeomFromText('POL YGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
SET @h = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SELECT @g.STIntersection(@h).ToString()
9、STIntersects()如果geography 实例与另一个geography 实例相交,则返回1。
否则,返回0
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 2 0, 4 2)', 0);
SET @h = geometry::STGeomFromText('POINT(1 1)', 0);
SELECT @g.STIntersects(@h)
10、STOverlaps()确定指定的Geometry 对象是否与当前Geometry 重叠
SET @g = geography::Parse('POL YGON ((-120.533 46.566, -118.283 46.1, -122.3 47.45, -120.533 46.566))');
SET @h= geography::Parse('POL YGON ((-120.533 46.566, -118.283 46.1, -122.3 47.45, -120.533 46.566))')
SELECT @g.STOverlaps(@h)
11/STSymDifference()返回表示位于一个geometry 实例或者另一个geometry 实例中的所有点的对象,但不包含同时位于这两个实例中的那些点
SET @g = geometry::STGeomFromText('POL YGON((0 0, 0 2, 2 2, 2 0, 0 0))', 0);
SET @h = geometry::STGeomFromText('POL YGON((1 1, 3 1, 3 3, 1 3, 1 1))', 0);
SELECT @g.STSymDifference(@h).ToString()
12、STTouches()是否接触
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 2 0, 4 2)', 0);
SET @h = geometry::STGeomFromText('POINT(1 1)', 0);
SELECT @g.STTouches(@h)
13、@pg.STWithin(@s)@pg是否包含在@s里
SET @g = geometry::STGeomFromText('POL YGON((0 0, 2 0, 2 2, 0 2, 0 0))', 0);
SET @h = geometry::STGeomFromText('POL YGON((1 1, 3 1, 3 3, 1 3, 1 1))', 0);
SELECT @g.STWithin(@h)
14、STGeometryN(geometry 数据类型)返回geometry collection 中的指定几何图形
SET @cd=geometry::STGeomFromText('MULTIPOINT((30.6666587469201
104.062021177233),(29.5076372217973106.489384971208))',4326)
Select STGeometryN(1).STAsText() 表示返回第一个点
15、STIsValid();验证geometry对象是否为正确的空间对象,若正确,返回1,否则0
SET @g=geometry::STGeomFromText('MULTILINESTRING((30.6666 104.06202,
29.50763 106.48938),(30.6666 104.06202,33.78142 105.97914))',4326);
select @g.STIsValid()
游标函数
CREATE function getpolygon(@ZNo varchar(50))
returns varchar(2000)
as
begin
declare@points nvarchar(2000),@point nvarchar(100),@startPoint nvarchar(100) set@points=''
declare myCursor Cursor for
select ltrim(rtrim(str(X)))+' '+ltrim(rtrim(str(Y)))from dbo.界址点
where Number in(select Number from dbo.宗地界址点
where ZNo=@ZNo)
open myCursor
fetch next from myCursor into@Point
while(@@fetch_status=0)
begin
if(@points='')
begin
set@points=@point
set@startpoint=@point
end
else
set@points=@points+','+@point
fetch next from myCursor into@point
end
deallocate myCursor
return@points+','+@startpoint
END
调用游标函数创建宗地多边形实例
update dbo.宗地
set Geom=geometry::Parse('POL YGON(('+dbo.getpolygon(dbo.宗地.ZNo)+'))') //dbo.getpolygon(dbo.宗地.ZNo)已在前面游标函数中转成字符串。