更新时间:2024-10-29 GMT+08:00

分析语句-函数

完整的分析语句语法如下:

SELECT [DISTINCT] (* | expression) [AS alias] [, ...]
[GROUP BY expression [, ...] [HAVING predicates]]
[ORDER BY expression [ASC | DESC] [, ...]]
[LIMIT size OFFSET offset]

本章节介绍函数。

数学类

表1 数学类

函数

作用

定义

示例

abs

绝对值

abs(number T) -> T

SELECT abs(0.5) LIMIT 1

add

加法

add(number T, number) -> T

SELECT add(1, 5) LIMIT 1

cbrt

立方根

cbrt(number T) -> T

SELECT cbrt(0.5) LIMIT 1

ceil

向上取整

ceil(number T) -> T

SELECT ceil(0.5) LIMIT 1

divide

除法

divide(number T, number) -> T

SELECT divide(1, 0.5) LIMIT 1

e

自然底数 e

e() -> double

SELECT e() LIMIT 1

exp

自然底数 e 的次幂

exp(number T) -> T

SELECT exp(0.5) LIMIT 1

expm1

自然底数 e 的次幂减一

expm1(number T) -> T

SELECT expm1(0.5) LIMIT 1

floor

向下取整

floor(number T) -> T

SELECT floor(0.5) AS Rounded_Down LIMIT 1

ln

自然对数

ln(number T) -> double

SELECT ln(10) LIMIT 1

log

以 T 为底数的对数

log(number T, number) -> double

SELECT log(10) LIMIT 1

log2

以 2 为底数的对数

log2(number T) -> double

SELECT log2(10) LIMIT 1

log10

以 10 为底数的对数

log10(number T) -> double

SELECT log10(10) LIMIT 1

mod

取余

mod(number T, number) -> T

SELECT modulus(2, 3) LIMIT 1

multiply

乘法

multiply(number T, number) -> number

SELECT multiply(2, 3) LIMIT 1

pi

π

pi() -> double

SELECT pi() LIMIT 1

pow

T 的次幂

pow(number T, number) -> T

SELECT pow(2, 3) LIMIT 1

power

T 的次幂

power(number T) -> T, power(number T, number) -> T

SELECT power(2, 3) LIMIT 1

rand

随机数

rand() -> number, rand(number T) -> T

SELECT rand(5) LIMIT 1

rint

舍弃小数

rint(number T) -> T

SELECT rint(1.5) LIMIT 1

round

四舍五入

round(number T) -> T

SELECT round(1.5) LIMIT 1

sign

符号

sign(number T) -> T

SELECT sign(1.5) LIMIT 1

signum

符号

signum(number T) -> T

SELECT signum(0.5) LIMIT 1

sqrt

平方根

sqrt(number T) -> T

SELECT sqrt(0.5) LIMIT 1

subtract

减法

subtract(number T, number) -> T

SELECT subtract(3, 2) LIMIT 1

/

除法

number / number -> number

SELECT 1 / 100 LIMIT 1

%

取余

number % number -> number

SELECT 1 % 100 LIMIT 1

三角函数

表2 三角函数

函数

作用

定义

示例

acos

反余弦

acos(number T) -> double

SELECT acos(0.5) LIMIT 1

asin

反正弦

asin(number T) -> double

SELECT asin(0.5) LIMIT 1

atan

反正切

atan(number T) -> double

SELECT atan(0.5) LIMIT 1

atan2

T 和 U 相除的结果的反正切

atan2(number T, number U) -> double

SELECT atan2(1, 0.5) LIMIT 1

cos

余弦

cos(number T) -> double

SELECT cos(0.5) LIMIT 1

cosh

双曲余弦

cosh(number T) -> double

SELECT cosh(0.5) LIMIT 1

cot

余切

cot(number T) -> double

SELECT cot(0.5) LIMIT 1

degrees

弧度转换为度

degrees(number T) -> double

SELECT degrees(0.5) LIMIT 1

radians

度转换为弧度

radians(number T) -> double

SELECT radians(0.5) LIMIT 1

sin

正弦

sin(number T) -> double

SELECT sin(0.5) LIMIT 1

sinh

双曲正弦

sinh(number T) -> double

SELECT sinh(0.5) LIMIT 1

tan

正切

tan(number T) -> double

SELECT tan(0.5) LIMIT 1

时间函数

表3 时间函数

函数

作用

定义

示例

curdate

当前日期

curdate() -> date

SELECT curdate() LIMIT 1

date

日期

date(date) -> date

SELECT date() LIMIT 1

date_format

根据格式获取对应日期值

date_format(date, string) -> string

SELECT date_format(date, 'Y') LIMIT 1

day_of_month

月份

day_of_month(date) -> integer

SELECT day_of_month(date) LIMIT 1

day_of_week

周几

day_of_week(date) -> integer

SELECT day_of_week(date) LIMIT 1

day_of_year

当年天数

day_of_year(date) -> integer

SELECT day_of_year(date) LIMIT 1

hour_of_day

当天小时数

hour_of_day(date) -> integer

SELECT hour_of_day(date) LIMIT 1

maketime

生成日期

maketime(integer, integer, integer) -> time

SELECT maketime(11, 30, 00) LIMIT 1

minute_of_hour

当前小时分钟数

minute_of_hour(date) -> integer

SELECT minute_of_hour(date) LIMIT 1

minute_of_day

当天分钟数

minute_of_day(date) -> integer

SELECT minute_of_day(date) LIMIT 1

monthname

月份名称

monthname(date) -> string

SELECT monthname(date) LIMIT 1

now

当前时间

now() -> time

SELECT now() LIMIT 1

second_of_minute

秒数

minute_of_day(date) -> integer

SELECT minute_of_day(date) LIMIT 1

timestamp

日期

timestamp(date) -> date

SELECT timestamp(date) LIMIT 1

year

年份

year(date) -> integer

SELECT year(date) LIMIT 1

文本函数

表4 文本函数

函数

作用

定义

示例

ascii

第一个字符的ASCII 值

ascii(string T) -> integer

SELECT ascii('t') LIMIT 1

concat_ws

连接字符串

concat_ws(separator, string, string) -> string

SELECT concat_ws('-', 'Tutorial', 'is', 'fun!') LIMIT 1

left

从左往右取字符串

left(string T, integer) -> T

SELECT left('hello', 2) LIMIT 1

length

长度

length(string) -> integer

SELECT length('hello') LIMIT 1

locate

查找字符串

locate(string, string) -> integer

SELECT locate('o', 'hello') LIMIT 1

replace

替换字符串

replace(string T, string, string) -> T

SELECT replace('hello', 'l', 'x') LIMIT 1

right

从右往左取字符串

right(string T, integer) -> T

SELECT right('hello', 1) LIMIT 1

rtrim

去除右侧空字符串

rtrim(string T) -> T

SELECT rtrim('hello ') LIMIT 1

substring

取子字符串

substring(string T, integer, integer) -> T

SELECT substring('hello', 2,5) LIMIT 1

trim

去除两侧空字符串

trim(string T) -> T

SELECT trim(' hello ') LIMIT 1

upper

全部转为大写

upper(string T) -> T

SELECT upper('helloworld') LIMIT 1

其他

表5 其他

函数

作用

定义

示例

if

if判断

if(boolean, object, object) -> object

SELECT if(false, 0, 1) LIMIT 1 ,

SELECT if(true, 0, 1) LIMIT 1

ifnull

字段为null时,填充默认值

ifnull(object, object) -> object

SELECT ifnull('hello', 1) LIMIT 1 ,

SELECT ifnull(null, 1) LIMIT 1

isnull

字段是否为null,是返回1,否返回0

isnull(object) -> integer

SELECT isnull(null) LIMIT 1 ,

SELECT isnull(1) LIMIT 1