Java教程

关于SQL的学习记录(SQL函数的使用)

本文主要是介绍关于SQL的学习记录(SQL函数的使用),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

SQL函数的使用

SQL函数的说明:
SQL函数是不通用的。SQL函数与前面所讲的SQL语句不同,它们在不同的数据库管理系统中不能通用,因为每一个数据库管理系统都有一套自己的SQL函数,而只有很少的函数在大多数DBMS中都能使用。例如:

功能SQL Server函数Oracel函数或语句MySQL函数
获取字符串的某部分SUBSTRING()SUBSTR()SUBSTRING()
获取当前日期GETDATE()SYSDATECURDATE()
转换数据类型CONVERT()有多个具体函数,如TO_DATE()将字符串转换为日期等CONVERT()

类型转换函数:

  • 转换函数将具体DBMS的数据值转换成其它数据类型或对其进行格式化。
  • 经常用到的转换是,将日期和数字转换成指定的字符串格式,或者将字符串转换成有效的日期或数值。
    ❀在SQL Server中,使用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函数可以将一个数值或者日期转换为指定格式的字符串。
    (1)将数值转换为字符串
    使用TO_CHAR函数将数值转换为字符串的语法格式为:TO_ CHAR ( number[,format])
    如果,不指定格式(format) ,Oracle将 会把number转换成最简单的字符串形式,如果是负数则在前面加一个减号(-) 。不过在多数情况下,用户还是想以特定的格式显示number,因此,需要设置format参数。
    (2)将日期转换为字符串
    使用TO_ CHAR函数将日期转换为字符串的语法格式为:TO_ CHAR (date, format )
    TO_ CHAR函数按format参数指定的格式将日期转换成相应的字符串形式。
  • Ⅱ.TO_DATE函数
    TO_DATE函数根据给定的格式将一个字符串转换成日期值,其语法格式为:TO_ DATE (string, format)

❀在MySQL中常用的类型转换函数:

  • CONVERT函数
    CONVERT函数的语法格式为:CONVERT(value, type)
    其中,type为数据类型,但是要特别注意,可以转换的数据类型是有限制的。只可以转换成下表中的格式:
类型语法格式
二进制BINARY[(N)]
字符型CHAR[(N)]
日期DATE
时间TIME
日期时间型DATETIME
浮点型DECIMAL
整数SIGNED[INTEGER]
无符号整数UNSIGNED[INTEGER]
  • CAST函数
    CAST函数的语法格式为:CAST(value AS type)
    其中,type为数据类型,同上

在MySQL中,若查询出来数字数据在单元格左边,则该数据为字符串类型;若查询出类的数字在单元格右边,则该数据为整型数据。

日期函数:
日期函数允许操作日期时间值。
SQL Server支持的日期函数有GETDATEDATEADDDATEDIFFDATENAMElDATEPART等函数。

  • Ⅰ.GETDATE函数
    .GETDATE.函数用于获取当前系统时间,其格式为:GETDATE()
    输入SELECT GETDATE()运行后就可以获得当前系统时间
  • Ⅱ.DATEADD函数
    ·DATEADD·函数用于在指定日期上增加年、月、日或者时间等,其返回值为日期型数据。
    其格式为:DATEADD(datepart,number,date)
    其中,datepart参数规定在日期的哪个部分(如年份、月份等)增加(减)数值。
    如:DATEADD(month,10,GETDATE())是在当前时间的“月”上增加了10个月,并返回10个月后的日期

说明: datepart参数值也可以使用缩写,例如,DATEADD(mm,10,GETDATE()也是在当前时间上增加10个月。

  • Ⅲ.DATEDIFF函数
    DATEDIFF函数用于获取两个日期间的差,并返回数值数据,其格式为:DATEDIFF(datepart,date1,date2)
    其中,datepart参数的说明同上。date1和date2是日期或者日期格式的字符串。
    如:DATEDIFF(year,birthday,GETDATE())
  • Ⅳ.DATENAME函数
    DATENAME函数用于获取日期的一部份,并以字符串形式返回,其格式为:DATENAME(datepart,date)
    其中,datepart参数的说明同上,date是日期或者日期格式的字符串。
    如:
    1、假设当前日期为2008年3月25日,则DATENAME (month,GETDATE())的结果为字符串’03’,DATENAME(dd,GETDATE())的结果为字符串‘25’。
    2、假设当前日期为2018年12月5日,则DATENAME(dd,GETDATE())返回的结果为字符串’5’,而并非是’05’。
  • Ⅴ.DATEAPART函数
    DATEPART函数用于获取日期的一部份,并以整数值返回,其格式为:DATEPART (datepart,date)
    其中,datepart参数的说明同上,date是日期或者日期格式的字符串。
    如:
    假设当前E期为2008年3月25日,则DATEPART (month,GETDATE())的结果为数值3,DATEPART(dd,GETDATE())的结果为数值25。

Oracle中常用的日期函数:

  • ADD_MONTHS函数
    ADD_ MONTHS函数的格式为:ADD_ MONTHS (date,number)
    该函数用于在参数date上加上number个月返回一个新月值。如果number为 负数,则返回值为date之前几个月的日期。
  • LAST_DAY
    LAST DAY函数的格式为:LAST_ DAY (date)
    该函数用于获取date所在月份最后一天的日期。
  • MONTHS_BETWEEN函数
    MONTHS_ BETWEEN函 数的格式为:MONTHS_ BETWEEN (date1,date2)
    该函数用于获取两个日期date1和date2之间的月份。如果两个日期月份内的天数相同,例如,两个都是某月的20日,则该函数会返回一个整数,否则,返回一个带有小数的数值,就是以每天1/31月来计算月中剩余的天数。如果date1比date2早(date2>date1) ,则返回负数。
  • NEW_TIME函数
    NEW_ TIME函数的格式为:NEW TIME (date,zone1,zone2)
    该函数用于将zone1时区的日期时间date转换成zone2时区的日期时间。
  • NEXT_DAY函数
    NEXT_ DAY函数的格式为:NEXT_ DAY(date,day)
    该函数返回离指定日期(date) 最近的星期(day) 的日期。(星期天为每个星期的第一天,所以要查询星期一的话,day=2)
  • ROUND函数
    ROUND函数的格式为:ROUND (date,format)
    该函数能够把date四舍五入到最接近格式元素指定的形式。

说明: 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()函数可获取当前日期、当前时间的函数。
    另外,MySQL还有CURRENT_ DATECURRENT. _TIMECURRENT _TIMESTAMPLOCALTIMENOW()、SYSDATE()等函数,可用来返回包含日期和时间的数据。
    CURRENT_ DATE: 根据返回值所处上下文是字符串或数字,返回以YYY-MM-DD’或YYYYMMDD格式表示的当前日期值;
    CURRENT TIME:根据返回值所处上下文是字符串或数字,返回以’HH:MM:SS’或HHMMSS格式表示的当前时间值;
    NOW()SYSDATE()CURRENT_ TIMESTAMPLOCALTIME:根据返回值所处上下文是字符串或数字,返回以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()的同 义词,也可以用运算符+和-进行运算
    在上面4个函数中,date是一个DATETIME或DATE值, expr对date进行加减法的-个表达式字符串,type指明表达式expr应该如何被解释。
    type可取以下值:
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更改为其他值的函数:

  • SQL Server中的·ISNULL·函数
    SQL Server中的ISNULL函数可以将NULL值更改为其他值。
    其语法格式为:ISNULL ( check_expression, replacement_value )
  • Oracle中的NVL函数
    Oracle中的NVL函数可以将NULL值更改为其他值。
    其语法格式为:NVL ( check_expression, replacement_value )
  • MySQL中的IFNULL函数
    MySQL中的IFNULL函数可以将NULL值更改为其他值。
    其语法格式为:IFNULL ( check_expression, replacement_value )

注:
check_expression: 将被检查是否为NULL值的表达式。check_expression 可以是任何类型的。
replacement_value:当check_expression为 NULL值时将返回该表达式。
replacement_value 必须与check_expresssion 具有相同的数据类型。

IF...ELSE逻辑函数:

  • Oracle中的DECODE函数
    在Oracle中可以使用DECODE函数翻译数据,也可以动态使查询以一种特殊的方式执行。
    基本语法格式:
DECODE(
表达式,
值1,返回值1,
值2,返回值2,
......,
值n,返回值n,
默认返回值)
#当“表达式=值1”,则DECODE函数的返回值为“返回值1”,而当“表达式=值2”,则DECODE函数的返回值为“返回值2”,以此类推
#如果表达式不与任何值相等,则DECODE函数的返回值为“默认返回值”
#DECODE函数最明显的用途是将查询到的值翻译成一种更具描述性的值
  • SQL Server、MySQL中的CASE函数
    SQL Server中的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
这篇关于关于SQL的学习记录(SQL函数的使用)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!