-
- Unary minus. Changes the sign of the argument:
Note that if this operator is used with a BIGINT
, the return value is a
BIGINT
! This means that you should avoid using -
on integers that
may have the value of -2^63
!
ABS(X)
- Returns the absolute value of
X
:
| mysql> SELECT ABS(2);
-> 2
mysql> SELECT ABS(-32);
-> 32
|
This function is safe to use with BIGINT
values.
ACOS(X)
- Returns the arc cosine of
X
, that is, the value whose cosine is
X
. Returns NULL
if X
is not in the range -1
to
1
:
| mysql> SELECT ACOS(1);
-> 0.000000
mysql> SELECT ACOS(1.0001);
-> NULL
mysql> SELECT ACOS(0);
-> 1.570796
|
ASIN(X)
- Returns the arc sine of
X
, that is, the value whose sine is
X
. Returns NULL
if X
is not in the range -1
to
1
:
| mysql> SELECT ASIN(0.2);
-> 0.201358
mysql> SELECT ASIN('foo');
-> 0.000000
|
ATAN(X)
- Returns the arc tangent of
X
, that is, the value whose tangent is
X
:
| mysql> SELECT ATAN(2);
-> 1.107149
mysql> SELECT ATAN(-2);
-> -1.107149
|
ATAN(Y,X)
ATAN2(Y,X)
- Returns the arc tangent of the two variables
X
and Y
. It is
similar to calculating the arc tangent of Y / X
, except that the
signs of both arguments are used to determine the quadrant of the
result:
| mysql> SELECT ATAN(-2,2);
-> -0.785398
mysql> SELECT ATAN2(PI(),0);
-> 1.570796
|
CEILING(X)
CEIL(X)
- Returns the smallest integer value not less than
X
:
| mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEIL(-1.23);
-> -1
|
The CEIL()
alias was added in version 4.0.6.
Note that the return value is converted to a BIGINT
!
COS(X)
- Returns the cosine of
X
, where X
is given in radians:
| mysql> SELECT COS(PI());
-> -1.000000
|
COT(X)
- Returns the cotangent of
X
:
| mysql> SELECT COT(12);
-> -1.57267341
mysql> SELECT COT(0);
-> NULL
|
CRC32(expr)
- Computes a cyclic redundancy check value and returns a 32-bit unsigned value.
The result is
NULL
if the argument is NULL
.
The argument is expected be a string and will be treated as one if it is not.
| mysql> SELECT CRC32('MySQL');
-> 3259397556
|
CRC32()
is available as of MySQL 4.1.0.
DEGREES(X)
- Returns the argument
X
, converted from radians to degrees:
| mysql> SELECT DEGREES(PI());
-> 180.000000
|
DIV
- Integer division.
Similar to
FLOOR()
but safe with BIGINT
values.
| mysql> SELECT 5 DIV 2
-> 2
|
DIV
is new in MySQL 4.1.0.
EXP(X)
- Returns the value of
e
(the base of natural logarithms) raised to
the power of X
:
| mysql> SELECT EXP(2);
-> 7.389056
mysql> SELECT EXP(-2);
-> 0.135335
|
FLOOR(X)
- Returns the largest integer value not greater than
X
:
| mysql> SELECT FLOOR(1.23);
-> 1
mysql> SELECT FLOOR(-1.23);
-> -2
|
Note that the return value is converted to a BIGINT
!
GREATEST(X,Y,...)
- Returns the largest (maximum-valued) argument.
The arguments are compared using the same rules as for
LEAST
:
| mysql> SELECT GREATEST(2,0);
-> 2
mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);
-> 767.0
mysql> SELECT GREATEST("B","A","C");
-> "C"
|
In MySQL versions prior to Version 3.22.5, you can use MAX()
instead of GREATEST
.
LEAST(X,Y,...)
- With two or more arguments, returns the smallest (minimum-valued) argument.
The arguments are compared using the following rules:
-
If the return value is used in an
INTEGER
context or all arguments
are integer-valued, they are compared as integers.
-
If the return value is used in a
REAL
context or all arguments are
real-valued, they are compared as reals.
-
If any argument is a case-sensitive string, the arguments are compared
as case-sensitive strings.
-
In other cases, the arguments are compared as case-insensitive strings:
| mysql> SELECT LEAST(2,0);
-> 0
mysql> SELECT LEAST(34.0,3.0,5.0,767.0);
-> 3.0
mysql> SELECT LEAST("B","A","C");
-> "A"
|
In MySQL versions prior to Version 3.22.5, you can use MIN()
instead of LEAST
.
Note that the above conversion rules can produce strange results in some
borderline cases:
| SELECT CAST(least(3600, 9223372036854775808.0) as SIGNED);
-> -9223372036854775808
|
This happens because MySQL reads 9223372036854775808.0
in an
integer context and the integer representation is not good enough to
hold the value so it's wraps to a signed integer.
LN(X)
- Returns the natural logarithm of
X
:
| mysql> SELECT LN(2);
-> 0.693147
mysql> SELECT LN(-2);
-> NULL
|
This function was added in MySQL version 4.0.3.
It is synonymous with LOG(X)
in MySQL.
LOG(X)
LOG(B,X)
- If called with one parameter, this function returns the natural logarithm
of
X
:
| mysql> SELECT LOG(2);
-> 0.693147
mysql> SELECT LOG(-2);
-> NULL
|
If called with two parameters, this function returns the logarithm of
X
for an arbitary base B
:
| mysql> SELECT LOG(2,65536);
-> 16.000000
mysql> SELECT LOG(1,100);
-> NULL
|
The arbitrary base option was added in MySQL version 4.0.3.
LOG(B,X)
is equivalent to LOG(X)/LOG(B)
.
LOG2(X)
- Returns the base-2 logarithm of
X
:
| mysql> SELECT LOG2(65536);
-> 16.000000
mysql> SELECT LOG2(-100);
-> NULL
|
LOG2()
is useful for finding out how many bits a number would
require for storage.
This function was added in MySQL version 4.0.3.
In earlier versions, you can use LOG(X)/LOG(2)
instead.
LOG10(X)
- Returns the base-10 logarithm of
X
:
| mysql> SELECT LOG10(2);
-> 0.301030
mysql> SELECT LOG10(100);
-> 2.000000
mysql> SELECT LOG10(-100);
-> NULL
|
MOD(N,M)
%
- Modulo (like the
%
operator in C).
Returns the remainder of N
divided by M
:
| mysql> SELECT MOD(234, 10);
-> 4
mysql> SELECT 253 % 7;
-> 1
mysql> SELECT MOD(29,9);
-> 2
mysql> SELECT 29 MOD 9;
-> 2
|
This function is safe to use with BIGINT
values.
The last example works only in MySQL 4.1
PI()
- Returns the value of PI. The default shown number of decimals is 5, but
MySQL internally uses the full double precession for PI.
| mysql> SELECT PI();
-> 3.141593
mysql> SELECT PI()+0.000000000000000000;
-> 3.141592653589793116
|
POW(X,Y)
POWER(X,Y)
- Returns the value of
X
raised to the power of Y
:
| mysql> SELECT POW(2,2);
-> 4.000000
mysql> SELECT POW(2,-2);
-> 0.250000
|
RADIANS(X)
- Returns the argument
X
, converted from degrees to radians:
| mysql> SELECT RADIANS(90);
-> 1.570796
|
RAND()
RAND(N)
- Returns a random floating-point value in the range
0
to 1.0
.
If an integer argument N
is specified, it is used as the seed value
(producing a repeatable sequence):
| mysql> SELECT RAND();
-> 0.9233482386203
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND();
-> 0.63553050033332
mysql> SELECT RAND();
-> 0.70100469486881
|
You can't use a column with RAND()
values in an ORDER BY
clause, because ORDER BY
would evaluate the column multiple times.
From version 3.23 you can do:
SELECT * FROM table_name ORDER BY RAND()
This is useful to get a random sample of a set SELECT * FROM
table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000
.
Note that a RAND()
in a WHERE
clause will be re-evaluated
every time the WHERE
is executed.
RAND()
is not meant to be a perfect random generator, but instead a
fast way to generate ad hoc random numbers that will be portable between
platforms for the same MySQL version.
ROUND(X)
ROUND(X,D)
- Returns the argument
X
, rounded to the nearest integer.
With two arguments, rounded to a number to D
decimals.
| mysql> SELECT ROUND(-1.23);
-> -1
mysql> SELECT ROUND(-1.58);
-> -2
mysql> SELECT ROUND(1.58);
-> 2
mysql> SELECT ROUND(1.298, 1);
-> 1.3
mysql> SELECT ROUND(1.298, 0);
-> 1
mysql> SELECT ROUND(23.298, -1);
-> 20
|
Note that the behavior of ROUND()
when the argument
is halfway between two integers depends on the C library
implementation. Some round to the nearest even number,
always up, always down, or always toward zero. If you need
one kind of rounding, you should use a well-defined function
such as TRUNCATE()
or FLOOR()
instead.
SIGN(X)
- Returns the sign of the argument as
-1
, 0
, or 1
, depending
on whether X
is negative, zero, or positive:
| mysql> SELECT SIGN(-32);
-> -1
mysql> SELECT SIGN(0);
-> 0
mysql> SELECT SIGN(234);
-> 1
|
SIN(X)
- Returns the sine of
X
, where X
is given in radians:
| mysql> SELECT SIN(PI());
-> 0.000000
|
SQRT(X)
- Returns the non-negative square root of
X
:
| mysql> SELECT SQRT(4);
-> 2.000000
mysql> SELECT SQRT(20);
-> 4.472136
|
TAN(X)
- Returns the tangent of
X
, where X
is given in radians:
| mysql> SELECT TAN(PI()+1);
-> 1.557408
|
TRUNCATE(X,D)
- Returns the number
X
, truncated to D
decimals. If D
is 0
, the result will have no decimal point or fractional part:
| mysql> SELECT TRUNCATE(1.223,1);
-> 1.2
mysql> SELECT TRUNCATE(1.999,1);
-> 1.9
mysql> SELECT TRUNCATE(1.999,0);
-> 1
mysql> SELECT TRUNCATE(-1.999,1);
-> -1.9
|
Starting from MySQL 3.23.51, all numbers are rounded toward zero.
If D
is negative, the whole part of the number is zeroed out:
| mysql> SELECT TRUNCATE(122,-2);
-> 100
|
Note that decimal numbers are normally not stored as exact numbers in
computers, but as double-precision values, so you may be fooled by the following
result:
| mysql> SELECT TRUNCATE(10.28*100,0);
-> 1027
|
The above happens because 10.28 is actually stored as something like
10.2799999999999999.