SQL函数的说明:
SQL函数是不通用的。SQL函数与前面所讲的SQL语句不同,它们在不同的数据库管理系统中不能通用,因为每一个数据库管理系统都有一套自己的SQL函数,而只有很少的函数在大多数DBMS中都能使用。例如:
功能 | SQL Server函数 | Oracel函数或语句 | MySQL函数 |
---|---|---|---|
获取字符串的某部分 | SUBSTRING() | SUBSTR() | SUBSTRING() |
获取当前日期 | GETDATE() | SYSDATE | CURDATE() |
转换数据类型 | CONVERT() | 有多个具体函数,如TO_DATE()将字符串转换为日期等 | CONVERT() |
类型转换函数:
CONVERT()
和CAST()
两个函数转换数据类型。CONVERT()
函数CONVERT( datatype[(length)], expression, [style]) #其中,datatype为要转换成的数据类型,如果是`CHAR`、`VARCHAR`、`BINARY`或`VARBINARY`数据类型,则可以选择length参数设置长度,expression为表达式(字段名),如果要将日期型数据转换为字符型数据,则还可以使用style参数设置日期显示格式。
CAST()
函数CAST()
函数是SQL92标准函数。使用CAST()
函数也可以转换数据类型,但是,在格式化日期时间数据方面不如CONVERT()
函数方便。CAST()
函数的语法格式为:CAST( expression AS datatype[(length)]) #其中,expression为表达式(字段名),datatype为要转换成的数据类型,如果是`CHAR`、`VARCHAR`、`BINARY`或`VARBINARY`数据类型,则可以选择length参数设置长度。
❀在Oracle中常用的类型转换函数:
TO_CHAR
函数TO_CHAR
函数可以将一个数值或者日期转换为指定格式的字符串。TO_CHAR
函数将数值转换为字符串的语法格式为:TO_ CHAR ( number[,format])
TO_ CHAR
函数将日期转换为字符串的语法格式为:TO_ CHAR (date, format )
TO_ CHAR
函数按format参数指定的格式将日期转换成相应的字符串形式。TO_DATE
函数TO_DATE
函数根据给定的格式将一个字符串转换成日期值,其语法格式为:TO_ DATE (string, format)
❀在MySQL中常用的类型转换函数:
CONVERT
函数CONVERT
函数的语法格式为:CONVERT(value, type)
类型 | 语法格式 |
---|---|
二进制 | BINARY[(N)] |
字符型 | CHAR[(N)] |
日期 | DATE |
时间 | TIME |
日期时间型 | DATETIME |
浮点型 | DECIMAL |
整数 | SIGNED[INTEGER] |
无符号整数 | UNSIGNED[INTEGER] |
CAST
函数CAST
函数的语法格式为:CAST(value AS type)
在MySQL中,若查询出来数字数据在单元格左边,则该数据为字符串类型;若查询出类的数字在单元格右边,则该数据为整型数据。
日期函数:
日期函数允许操作日期时间值。
❀SQL Server支持的日期函数有GETDATE
、DATEADD
、DATEDIFF
、DATENAME
和lDATEPART
等函数。
GETDATE
函数.GETDATE.
函数用于获取当前系统时间,其格式为:GETDATE()
SELECT GETDATE()
运行后就可以获得当前系统时间DATEADD
函数DATEADD(datepart,number,date)
DATEADD(month,10,GETDATE())
是在当前时间的“月”上增加了10个月,并返回10个月后的日期说明: datepart参数值也可以使用缩写,例如,DATEADD(mm,10,GETDATE()也是在当前时间上增加10个月。
DATEDIFF
函数DATEDIFF
函数用于获取两个日期间的差,并返回数值数据,其格式为:DATEDIFF(datepart,date1,date2)
DATEDIFF(year,birthday,GETDATE())
DATENAME
函数DATENAME
函数用于获取日期的一部份,并以字符串形式返回,其格式为:DATENAME(datepart,date)
DATENAME (month,GETDATE())
的结果为字符串’03’,DATENAME(dd,GETDATE())
的结果为字符串‘25’。DATENAME(dd,GETDATE())
返回的结果为字符串’5’,而并非是’05’。DATEAPART
函数DATEPART
函数用于获取日期的一部份,并以整数值返回,其格式为:DATEPART (datepart,date)
DATEPART (month,GETDATE())
的结果为数值3,DATEPART(dd,GETDATE())
的结果为数值25。❀Oracle中常用的日期函数:
ADD_MONTHS
函数ADD_ MONTHS (date,number)
LAST_DAY
LAST DAY
函数的格式为:LAST_ DAY (date)
MONTHS_BETWEEN
函数MONTHS_ BETWEEN
函 数的格式为:MONTHS_ BETWEEN (date1,date2)NEW_TIME
函数NEW_ TIME
函数的格式为:NEW TIME (date,zone1,zone2)
NEXT_DAY
函数NEXT_ DAY
函数的格式为:NEXT_ DAY(date,day)ROUND
函数ROUND
函数的格式为:ROUND (date,format)说明: Oracle的 日期格式默认为“DD-MON-YY",如果想改为"yyyy-mm-dd hh24:mi:ss",应使用语句ALTER SESSION SET NLS_ DATE FORMAT='yyyy-mm-dd hh24:mi:ss’更改会话
❀在MySQL中常用的日期函数:
CURDATE()
、CURTIME()
函数可获取当前日期、当前时间的函数。CURRENT_ DATE
、CURRENT. _TIME
、CURRENT _TIMESTAMP
、LOCALTIME
、NOW
()、SYSDATE()
等函数,可用来返回包含日期和时间的数据。CURRENT_ DATE
: 根据返回值所处上下文是字符串或数字,返回以YYY-MM-DD’或YYYYMMDD格式表示的当前日期值;CURRENT TIME
:根据返回值所处上下文是字符串或数字,返回以’HH:MM:SS’或HHMMSS格式表示的当前时间值;NOW()
、SYSDATE()
、CURRENT_ TIMESTAMP
、LOCALTIME
:根据返回值所处上下文是字符串或数字,返回以YYY-MM-DD HH:MM:SS’或YYYMMDDHHMMSS格式表示的当前日期时间UNIX_ TIMESTAMP()
: 返回一个Unix时间戳(从’1970-01-01 00:00:00’GMT开始的秒数,date默认值为当前时间);FROM_ UNIXTIME()
: 将时间戳转换为’YYY-MM-DD HH:MM:SS’或YYYMMDDHHMMSS格式表示的值函数 | 说明 |
---|---|
YEAR(date) | 返回date的年份( 范围在1000到9999) |
MONTH(date) | 返回date的月份数值 |
DAY(date) | 返回date的天数值 |
HOUR(date) | 返回date的小时数(范围是0到23) |
MINUTE(date) | 返回date的分钟数( 范围是0到59) |
SECOND(date) | 返回date的秒数( 范围是0到59) |
TO_ DAYS(date) | 返回从西元0年至date的天数(不计算1582年以前) |
FROM DAYS(N) | 返回距西元0年N天的日期值(不计算1582年以前) |
DAYOFWEEK(date) | 返回date是星期几(1=星期天,2=星期一,…=星期六) |
WEEKDAY(date) | 返回date是星期几(0=星期一,1=星期二,…=… 星期天) |
DAYOFMONTH(date) | 返回date是一月中的第几日(在1到31范围内) |
DAYOFYEAR(date) | 返回date是一年中的第几日 (在1到366范围内) |
DAYNAME(date) | 返回date是星期几(按英文名返回) |
MONTHNAME(date) | 返回date是几月(按英文名返回) |
QUARTER(date) | 返回date是一年的第几个季度 |
WEEK(date,first) | 返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始) |
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
ADDDATE()
和SUBDATE()
是DATE_ ADD()
和DATE_ SUB()
的同 义词,也可以用运算符+和-进行运算type取值 | 说明 |
---|---|
SECOND | 表示按秒运算,expr为整 数值 |
MINUTE | 表示按分钟运算,expr为整 数值 |
HOUR | 表示按小时运算,expr为整数值 |
DAY | 表示按天运算,expr为整 数值 |
MONTH | 表示按月运算,expr为整 数值 |
YEAR | 表示按年运算,expr为整 数值 |
MINUTE SECOND | 表示按分钟和秒进行运算,expr为字符串, 如"MINUTES:SECONDS" |
HOUR_ MINUTE | 表示按小时和分钟进行运算,expr为字符串, 如"HOURS:MINUTES” |
DAY_ HOUR | 表示按天和小时进行运行,expr为字符串, 如"DAYS HOURS"; |
YEAR MONTH | 表示按年和月进行运算,expr为字符串,如"YEARS-MONTHS" |
HOUR_ SECOND | 表示按小时,分钟进行运算,expr为字符串,如"HOURS:MINUTES:SECONDS“ |
DAY_ MINUTE | 表示按天, 小时,分钟进行运算,expr为字符串, 如"DAYS HOURS:MINUTES” |
DAY_ SECOND | 表示按天, 小时,分钟,秒进行运算,expr为字符串,如"DAYS HOURS:MINUTES:SECONDS" |
数学函数:
❀常见的SQL Server使用的数学函数:
函数 | 参数 | 说明 |
---|---|---|
ABS | (numeric_表达式) | 绝对值 |
ACOS | (float_表达式) | 返回以弧度表示的角度值,该角度值的余弦为给定的float表达式;本函数亦称反余弦。 |
ASIN | (float_表达式) | 返回以弧度表示的角度值,该角度值的正弦为给定的float表达式;亦称反正弦。 |
ATAN | (float_表达式) | 返回以弧度表示的角度值,该角度值的正切为给定的float表达式;亦称反正切。 |
ATN2 | (float_表达式, float_表达式) | 返回以弧度表示的角度值,该角度值的正切介于两个给定的float表达式之间;亦称反正切。 |
COS | (float_表达式) | 返回给定角度(以弧度为单位)的三角正弦值(近似值)。 |
SIN | (float_表达式) | 返回给定角度(以弧度为单位)的三角正弦值(近似值)。 |
COT | (float_表达式) | 返回给定float表达式中指定角度(以弧度为单位)的三角余切值。 |
TAN | (float_表达式) | 返回float表达式的正切值。 |
CEILING | (numeric_表达式) | 返回大于或等于所给数字表达式的最小整数。 |
DEGREES | (numeric_表达式) | 当给出以弧度为单位的角度时,返回相应的以度数为单位的角度。 |
EXP | (float_表达式) | 返回所给的float表达式的指数值。 |
FLOOR | (numeric_表达式) | 返回小于或等于所给数字表达式的最大整数。 |
LOG | (float_表达式) | 返回给定float表达式的自然对数。 |
LOG10 | (float_表达式) | 返回给定float表达式的以10为底的对数。 |
PI | ( ) | 返回PlI的常量值。 |
POWER | (numeric_表达式) | 返回给定数字表达式的y次方。 |
RADIANS | (numeric_表达式) | 对于在数字表达式中输入的度数值返回弧度值。 |
RAND | ([seed]) | 返回0到1之间的随机float值。 |
ROUND | (numeric_表达式, length) | 返回数字表达式并四舍五入为指定的长度或精度。 |
SIGN | (numeric_表达式) | 返回给定表达式的正(+1)、零(0)或负(-1)号。 |
SORT | (float_表达式) | 返回给定表达式的平方根。 |
❀Oracle中常用的数学函数:
函数 | 参数 | 说明 |
---|---|---|
ABS | (number) | 返回绝对值 |
CEIL | (number) | 返回与给定参数相等或比给定参数大的最小整数。 |
COS、SIN、 TAN | (number) | 返回给定角度(以弧度为单位)的三角余弦值、正弦值和正切值。 |
COSH、SINH、 TANH | (number) | 返回给定角度的反余弦值、反正弦值和反正切值。。 |
EXP | (number) | 返回所给值的指数值。 |
FLOOR | (number) | 返回与给定参数相等或比给定参数小的最大整数 |
LN | (number) | 返回给定参数的自然对数 |
LOG | (base, number) | 返回给定数值的以base为底的对数。 |
MOD | (n,m ) | 返回n除m的模。 |
POWER | (x,y) | 返回x的y次方。 |
ROUND | (number , length) | 返回number,并四舍五入为指定的长度或精度。 |
SIGN | (number) | 返回给定数值的正(+1)、零(0)或负(-1)号。 |
SQRT | (number) | 返回给定数值的平方根。 |
TRUNC | (number , decimal-pluces) | 返回值为按decimal -pluces截断的给定数值 |
❀MySQL中常用的数学函数:
函数 | 参数 | 说明 |
---|---|---|
ABS | (number) | 返回绝对值 |
CEIL | (number) | 返回与给定参数相等或比给定参数大的最小整 |
COS、SIN、 TAN | (number) | 返回给定角度(以弧度为单位)的三角余弦值、正弦值和正切值 |
ACOS、ASIN、 ATAN | (number) | 返回给定角度的反余弦值、反正弦值和反正切值 |
EXP | (number) | 返回e的x乘方后的值(自然对数的底) |
FLOOR | (number) | 返回不大于x的最大整数值 |
LN | (number) | 返回给定参数的自然对数 |
LOG | (base, number) | 返回给定数值的以base为底的对数。 |
LOG10 | (number) | 返回X的基数为10的对数 |
MOD | (n,m ) | 返回n除m的模 |
PI | () | 返回π (pi)的值。默认的显示小数位数是7位,MySQL内部会使用完全双精度值 |
POWER | (x,y) | 返回x的y次方 |
RADIANS | (number) | 返回number由度转化为弧度的值 |
RAND | () | 返回一个0-1之间的随机浮点值 |
ROUND | (number , length) | 返回number,并四舍五入为指定的长度或精度 |
SIGN | (number) | 返回给定数值的正(+1)、零(0)或负(-1)号 |
SQRT | (number) | 返回给定数值的平方根 |
TRUNCATE | (number , decimal-pluces) | 返回值为按decimal pluces截断的给定数值 |
字符函数:
❀常见的SQL Server使用的字符函数:
函数 | 参数 | 说明 |
---|---|---|
ASCII | (char_表达式) | 返回字符表达式结果的最左边字符的ASCII码 |
CHAR | (integer_表达式) | 返回ASCII码为指定整数的字符 |
CHARINDEX | (char_表达式1,char_表达式2[,start]) | 返回字符表达式1在字符表达式2中的起始位置。start参数指定从字符表达式2的哪个位置开始向后寻找 |
DIFFERENCE | (char_表达式,char_表达式) | 比较两个字符串的相似性,返回从0到4的值,值为4时是最好的匹配。 |
LEFT | (char_表达式,integer_表达式) | 返回字符串左面的指定个数的字符 |
LOWER | (char_表达式) | 将字符串表达式中的所有大写字母全部转换成小写字母 |
LTRIM | (char_表达式) | 删除字符串左边所有的空格 |
REPLICATE | (char_表达式,integer_表达式) | 以指定的次数重复字符表达式。 |
REVERSE | (char_表达式) | 返回字符表达式的逆序。 |
RIGHT | (char_表达式,integer_表达式) | 返回字符串右面的指定个数的字符 |
RTRIM | (char_表达式) | 删除字符串右边所有的空格 |
SOUNDEX | (char_表达式) | 返回由四个字符组成的代码(SOUNDEX)以评估两个字符串的相似性。 |
SPACE | (integer_表达式) | 返回一个由重复空格组成的字符串。空格数等于<integer_表达式>,若整数表达式为负数,则返回一个空字符串。 |
STR | (float_expression [ , length [ , decimal ] ]) | 由数字数据转换来的字符数据。length是总长度,包括小数点、符号、数字或空格,默认值为10。decimal是小数点右边的位数。 |
STUFF | (char_表达式,start,length,char_表达式) | 删除指定长度的字符并在指定的起始点插入另一组字符。 |
SUBSTRING | (表达式,start,length) | 返回表达式中start位置开始的length长度的子串,该子串可能是字符串,也可能是二进制字符串 |
UPPER | (char_表达式) | 将字符串表达式中的所有小写字母全部转换成大写字母 |
❀Oracle常用的字符函数:
函数 | 参数 | 说明 |
---|---|---|
CHR | (number) | 返回与所给数值参数相等的字符。 |
CONCAT | (string1,string2) | 返回字符串连接结果。 |
INITCAP | (string) | 该函数将参数的第一个字母变为大写此外其它的字母则转换成小写。 |
INSTR | (input_ string,search string[,n[,m]) | 从输入字符串的第n个字符开始查找搜索字符串的第m次出现 |
LENGTH | (string) | 返回输入字符串的字符数。 |
LOWER | (string) | 将输入字符串全部转换为小写字母。 |
LPAD | (string, n [,pad_ chars]) | 在输入字符串的左边填充Epad_ chars指定的字符,将其拉深至n个字符长。 |
LTRIM | (string) | 从输入字符串中删除所有前导空格,即左边的空格。 |
NLSSORT | (string) | 对输入字符串的各个字符进行排序。 |
REPLACE | (string,search_ string [,replace_ string]) | 将输入字符串中出现的所有search_string都替换为replace_ string, 如果不指定replace_ string, 则删除全部search_ string |
RPAD | (string, n [,pad_ chars]) | 在输入字符串的右边填充上pad_ chars指定 的字符,将其拉深至n个字符长。 |
RTRIM | (string) | 从输入字符串中删除右边的所有空格。 |
SOUNDEX | (string) | 返回所有在发音上与输入字符串相似的字符串。 |
SUBSTR (string , start [, length]) | 返回输入字符串中从第start位开始length长的一部分。 | |
UPPER | (string) | 将输入字符串全部转换成大写字母。 |
❀MySQL常用的字符函数:
函数 | 参数 | 说明 |
---|---|---|
ASCII | (string) | 返回值为字符串string的最左字符的数值 |
BIN | (number) | 返回值为number的二进制值的字符串表示 |
CHAR | (number…) | 返回与所给数值参数相等的字符 |
CONCAT | (string1,string2) | 返回字符串连接结果 |
INSTR | (input_ string,search _string[,n[,m]]) | 从输入字符串的第n个字符开始查找搜索字符串的第m次出现 |
LENGTH | (string) | 返回输入字符串的字符数 |
LOWER\LCASE | (string) | 将输入字符串全部转换为小写字母 |
LPAD | (string, n [,pad_ chars]) | 在输入字符串的左边填充上pad_ chars指定 的字符,将其拉深至n个字符长 |
LTRIM | (string) | 从输入字符串中删除所有前导空格,即左边的空格 |
NLSSORT | (string) | 对输入字符串的各个字符进行排序 |
REPLACE | (string , search_ string [,replace_ string]) | 将输入字符串中出现的所有search_ string都 替换为replace_ string, 如果不指定replace_ string, 则删除全部search_ string |
RPAD | (string, n [,pad_ chars]) | 在输入字符串的右边填充上pad_ chars指定 的字符,将其拉深至n个字符长 |
RTRIM | (string) | 从输入字符串中删除右边的所有空格 |
SUBSTR | (string , start [, length]) | 返回输入字符串中从第start位开始length长的一部分 |
UPPER | (string) | 将输入字符串全部转换成大写字母 |
将NULL更改为其他值的函数:
ISNULL
函数可以将NULL值更改为其他值。ISNULL ( check_expression, replacement_value )
NVL
函数NVL
函数可以将NULL值更改为其他值。NVL ( check_expression, replacement_value )
IFNULL
函数IFNULL
函数可以将NULL值更改为其他值。IFNULL ( check_expression, replacement_value )
注:
check_expression: 将被检查是否为NULL值的表达式。check_expression 可以是任何类型的。
replacement_value:当check_expression为 NULL值时将返回该表达式。
replacement_value 必须与check_expresssion 具有相同的数据类型。
IF...ELSE
逻辑函数:
DECODE
函数DECODE
函数翻译数据,也可以动态使查询以一种特殊的方式执行。DECODE( 表达式, 值1,返回值1, 值2,返回值2, ......, 值n,返回值n, 默认返回值) #当“表达式=值1”,则DECODE函数的返回值为“返回值1”,而当“表达式=值2”,则DECODE函数的返回值为“返回值2”,以此类推 #如果表达式不与任何值相等,则DECODE函数的返回值为“默认返回值” #DECODE函数最明显的用途是将查询到的值翻译成一种更具描述性的值
CASE
函数CASE
函数与Oracle中的DECODE
函数相对应。CASE WHEN 条件表达式1 THEN 返回值1, WHEN 条件表达式2 THEN 返回值2, ......, WHEN 条件表达式n THEN 返回值n, ELSE 返回值n+1 END #当“条件表达式1”成立时,CASE函数的返回值为“返回值1”,而当“条件表达式2”成立时,CASE函数的返回值为“返回值2”,以此类推 #如果条件表达式1~n都不成立,则CASE函数的返回值为“返回值n+1” #或者有时也可以这样写 CASE 表达式 WHEN 值1 THEN 返回值1, WHEN 值2 THEN 返回值2, ......, WHEN 值n THEN 返回值n, ELSE 返回值n+1 END