MySQL学习笔记(4)
时间:2006-12-12 来源:bitterness
dmysql函数
==========
mysql运算符
---
比较运算符,结果true (1) . false(0) .NULL
=,!=,<>,>,<,<=,>=
null安全等于比较<=>
is null ,is not null,isnull(expr)
expr between min and max
如果expr大于或等于min,并且expr小于或等于max,between返回1,否则返回0。等价于表达式(min<=expr and expr<=max)
expr in (v1,v2,...)
如果expr是in列表中的一值,它将返回1,否则返回0
逻辑运算符
与或非
1(true),0(false),null
not或!
-----
select not 10;
0
select !(1+1);
0
select !1+1;<=>select (!1)+1;
0
------
and或&&
只要操作数中有一个为null返回值为null
------
or或||
只要操作数中有一个为null返回值为null
------
xor逻辑异或
只要操作数中有一个为null返回值为null
对于非null的操作数,如果有奇数个非零的操作数,结果返回1,否则返回0
-----------
mysql流程控制函数
ifnull(expr1,value)
如果expr1为非null,ifnull()返回false,否则返回expr1,ifnull()返回一个数字或字符串值,这取决于它被使用的语境
mysql>select ifnull(1,0);
1
select ifnull(null,10);
10
select ifnull(1/0,10);
10
select ifnull(1/0,'yes');
'yes'
----
(1)case vlaue when [compare-value]then reslut [when[compare-value]] then result ...] [else result] end
(2)case when [condition] then result [when[condition]then result...][else result] end
第一形式当value=compare-value时返回result
第二形式当第一个为真值的condition出现时,返回该条件的结果,如果没有匹配的结果值,那么else后的结果将被返回,如果没有else部分,那么返回null
mysql>select case 1 when 1 then "one"
when 2 then "two" else "more" end;
->"one"
mysql>select case when 1>0 then "true" else "false" end;
->"true"
-------
if(expr1,expr2,expr3)
如果expr1为真(expr1<>0以及expr1<>null)那么if()返回expr2,否则返回expr3.
if()返回一个数字或字符串,这取决于它使用的语境
mysql>select if(1>2,2,3);
->3
mysql>select if(1<2,'yes','no');
->'yes'
mysql>select if(0.1,1,0); 0.1四舍五入变成0,返回0
->0
mysql>select if(0.1<>0,1,0);
->1
--------
nullif(expr1,expr2)
如果expr1=expr2 为真,返回null,否则返回expr1
等同于case when expr1=expr2 then null else expr1 end;
mysql>select nullif(1,1);
->null
mysql>select nullif(1,2);
->1
------------------------
mysql字符串函数
返回字符串str最左边的那个字符的ASCII码值
mysql>select ASCII('2');
->50
mysql>select ASCII(2);
->50
mysql>select ASCII('david'); //d的ASCII码值100
->100
----
返回n的字符串表示的二进制值形式
mysql>select bin(12);
->'1100'
返回n的字符串表示的八进制值形式
mysql>select oct(12);
->14
如果x是一个数字,返回x的字符串表示的十六进制值形式,这里x是一个长长的数字bigint
如果x是一个字符串,x中的每一个字符均被转换为2位十六进制数字,并以十六进制的字符串形式返回,这是0xff形式的字符串反转操作
mysql>select hex(255);
->'ff'
mysql>select hex("abc");
->616263
mysql>select 0x616263;
->"abc"
char()以整数类型解释参数,返回这个整数所代表的ascii码值给出的字符组成的字符串,null值被忽略:
mysql>select char(77,121,83,81,'76');
->'MySQL'
mysql>select char(77,77.3,'77.3');
->'MMM'
char_length(str)返回字符串str的字符个数
mysql>select length('text');
->4
concat(str1,str2,...)将参数连接成字符串返回,如果有任何一个参数是null,返回值为null,可以有超过2个参数,数字参数将被转换为相等价的字符串形式
mysql>select concat('my','s','ql');
->'mysql'
mysql>select concat('my',null,'ql');
->null
mysql>select concat(14.3,5);
->'14.35'
locate(子串substr,母串str) 返回子串substr在字符串str中第一次出现的位置,如果子串substr在str中不存在,返回值0
mysql>select locate('bar','foobarbar');
->4
mysql>select locate('xbar','foobar');
->0
instr(str,substr)
返回子串substr在字符串str中第一次出现的位置,这与有二个参数形式的locate()相似,只是参数的位置被颠倒了
mysql>select instr('foobarbar','bar');
->4
lpad(str,len,padstr) //l left
用字符串padstr对str进行左边填补直到它的长度达到len个字符长度,然后返回str,如果str的长度长于len,那么它将被截除到len个字符
mysql>select lpad('hi',4,'??');
->'??hi'
rpad(str,len,padstr) //r rigth右边
left(str,len)
返回字符串str中最左边的len个字符
right(str,len)
返回字符串str中最右边的len个字符
substring(str,pos,len) = mid(str,pos,len)
从字符串 str的post位置起返回len个字符的子串
mysql >select substring('wuhan university',5,6);
->'n univ'
ltrim(str)
返回移除了领头的空格字符后的str
mysql>select ltrim(' 武汉大学');
->'武汉大学'
rtrim(str)
返回移除了最后的空格字符后的str
trim([[both|leading|trailing][remstr]from]str)
移除字符串str中所有的remstr前缀或后缀。然后将其返回,如果没有任何both,leading或trailing修饰符被给出,both被假定,如果remstr没有被指定,空格将被移除:
mysql>select trim(' bar ');
->'bar'
mysql>select trim(leading 'x' from 'xxxbarxxx');
->'varxxx'
mysql>select trim(both 'x' from 'xxxbarxxx');
->'bar'
mysql>select trim(trailing 'xyz' from 'barxxyz');
->'barx'
space(n)
返回有n空格字符组成的字符串
mysql>select space(6);
->' '
replace(str,from_str,to_str)
repeat(str,count)
返回一个由重复了count次的字符串str组成的字符串,如果count<=0,返回一个空字符串,如果str或count是null,返回值也为null
mysql>select repeat('mysql',3);
->'mysqlmysqlmysql'
replace(str,from_str,to_str)
在字符串str中所有出现的字符串from_str均被to_str替换,然后返回这个字符串
mysql>select replace('www.mysql.com','w','ww');
->'wwwwww.mysql.com'
mysql>select replace('www.mysql.com','my','your');
->'www.yoursql.com'
reverse(str)
以颠倒的字符顺序然后返回
lcase(str)
lower(str)
把当前字符所有字符改为小写,然后返回
ucase(str)
upper(str)
依照当前字符集把str改为大写,然后返回
load_file(file_name)
读入文件,将文件内容作为一个字符串返回
文件不存在,或没有权限,就返回空null
mysql>update tb1_name
set blob column=load_file("/tmp/picture")
where id=1;
----------------------------------
mysql数字函数
+-*/
abs(x) 返回x的绝对值
div 整除
mysql>select 5 div 2
->2
mod(n,m)
%
取模,返回n被m除后的余数
floor(x)
返回不大于x的最大整数值
msyql>select flor(1.23);
->1
msyql>select flor(-1.23)
->-2
ceiling(x)
返回大于x的最小整数
mysql>select ceiling(1.23);
->2
round(x)
将参数x四舍五入到最近的整数,然后返回
round(x,d)
将一个数字四舍五入到d个小数后返回
exp(x)
返回值e(自然对数的底)的x次方
mysql>select exp(2);
->7.38905
ln(x)
log(x)
返回x自然对数
log(b,x)
返回x任意底b的对数
mysql>select log(2,65536);
->16.0000000
mysql>select log(1,100);
->null
sqrt(x)
返回x的非负平方根
pi()
返回pi(圆周率)值,缺省是显示5位小数,双精度
提前精度
mysql>select pi()+0.0000000000000000000
cos(x)
余弦
sin(x)
正弦
tan(x)
acos(x)
asin(x)
反正弦
atan(x)
------
round(),round(n)
返回一个范围在0-1.0之间的随机浮点值
参数n被指定,它被当做种子值使用(用于产生一个可重复的数值)
mysql>select round(100);
->产生随机数
--------------------------------
mysql日期时间函数
now()
sysdate()
current_timestamp
yyyy-mm-dd hh:mm:ss或
yyyymmddhhmmss
mysql>select now();
->2006-11-23 10:54:01
mysql>select now() + 0
->20061123105401
curdate()
current_date
yyyy-mm-dd
yyyymmdd
curtimw()
current_time
hh:mm:ss
hhmmss
----------------------------
mysql转换函数
mysql>select 1+'1';
->2
mysql>select concat("hello you",2);
->"hello you 2"
cast(expression as type)
convert(expression, type)
type可以是:
char,date,datetime,signed{int},time,unsigned{int}
mysql>select cast(1-2 as unsigned)
->1844671107867311213
mysql>select cast(cast(1-2 as unsigned) as int);
->-1
database()
mysql>select datebase();
->返回当前数据库
user()
system_user()
session_user()
返回当前mysql用户名
password(str)
old_password(str)
从纯文本口令str计算一个口令字符串,这个函数用于对存储到授权表user的password列中的mysql口令进行加密
mysql>select password('badpwd');
->'1adsf51adsf5sad5f' mysql其他函数 建议参考手册
==========
mysql运算符
---
比较运算符,结果true (1) . false(0) .NULL
=,!=,<>,>,<,<=,>=
null安全等于比较<=>
is null ,is not null,isnull(expr)
expr between min and max
如果expr大于或等于min,并且expr小于或等于max,between返回1,否则返回0。等价于表达式(min<=expr and expr<=max)
expr in (v1,v2,...)
如果expr是in列表中的一值,它将返回1,否则返回0
逻辑运算符
与或非
1(true),0(false),null
not或!
-----
select not 10;
0
select !(1+1);
0
select !1+1;<=>select (!1)+1;
0
------
and或&&
只要操作数中有一个为null返回值为null
------
or或||
只要操作数中有一个为null返回值为null
------
xor逻辑异或
只要操作数中有一个为null返回值为null
对于非null的操作数,如果有奇数个非零的操作数,结果返回1,否则返回0
-----------
mysql流程控制函数
ifnull(expr1,value)
如果expr1为非null,ifnull()返回false,否则返回expr1,ifnull()返回一个数字或字符串值,这取决于它被使用的语境
mysql>select ifnull(1,0);
1
select ifnull(null,10);
10
select ifnull(1/0,10);
10
select ifnull(1/0,'yes');
'yes'
----
(1)case vlaue when [compare-value]then reslut [when[compare-value]] then result ...] [else result] end
(2)case when [condition] then result [when[condition]then result...][else result] end
第一形式当value=compare-value时返回result
第二形式当第一个为真值的condition出现时,返回该条件的结果,如果没有匹配的结果值,那么else后的结果将被返回,如果没有else部分,那么返回null
mysql>select case 1 when 1 then "one"
when 2 then "two" else "more" end;
->"one"
mysql>select case when 1>0 then "true" else "false" end;
->"true"
-------
if(expr1,expr2,expr3)
如果expr1为真(expr1<>0以及expr1<>null)那么if()返回expr2,否则返回expr3.
if()返回一个数字或字符串,这取决于它使用的语境
mysql>select if(1>2,2,3);
->3
mysql>select if(1<2,'yes','no');
->'yes'
mysql>select if(0.1,1,0); 0.1四舍五入变成0,返回0
->0
mysql>select if(0.1<>0,1,0);
->1
--------
nullif(expr1,expr2)
如果expr1=expr2 为真,返回null,否则返回expr1
等同于case when expr1=expr2 then null else expr1 end;
mysql>select nullif(1,1);
->null
mysql>select nullif(1,2);
->1
------------------------
mysql字符串函数
返回字符串str最左边的那个字符的ASCII码值
mysql>select ASCII('2');
->50
mysql>select ASCII(2);
->50
mysql>select ASCII('david'); //d的ASCII码值100
->100
----
返回n的字符串表示的二进制值形式
mysql>select bin(12);
->'1100'
返回n的字符串表示的八进制值形式
mysql>select oct(12);
->14
如果x是一个数字,返回x的字符串表示的十六进制值形式,这里x是一个长长的数字bigint
如果x是一个字符串,x中的每一个字符均被转换为2位十六进制数字,并以十六进制的字符串形式返回,这是0xff形式的字符串反转操作
mysql>select hex(255);
->'ff'
mysql>select hex("abc");
->616263
mysql>select 0x616263;
->"abc"
char()以整数类型解释参数,返回这个整数所代表的ascii码值给出的字符组成的字符串,null值被忽略:
mysql>select char(77,121,83,81,'76');
->'MySQL'
mysql>select char(77,77.3,'77.3');
->'MMM'
char_length(str)返回字符串str的字符个数
mysql>select length('text');
->4
concat(str1,str2,...)将参数连接成字符串返回,如果有任何一个参数是null,返回值为null,可以有超过2个参数,数字参数将被转换为相等价的字符串形式
mysql>select concat('my','s','ql');
->'mysql'
mysql>select concat('my',null,'ql');
->null
mysql>select concat(14.3,5);
->'14.35'
locate(子串substr,母串str) 返回子串substr在字符串str中第一次出现的位置,如果子串substr在str中不存在,返回值0
mysql>select locate('bar','foobarbar');
->4
mysql>select locate('xbar','foobar');
->0
instr(str,substr)
返回子串substr在字符串str中第一次出现的位置,这与有二个参数形式的locate()相似,只是参数的位置被颠倒了
mysql>select instr('foobarbar','bar');
->4
lpad(str,len,padstr) //l left
用字符串padstr对str进行左边填补直到它的长度达到len个字符长度,然后返回str,如果str的长度长于len,那么它将被截除到len个字符
mysql>select lpad('hi',4,'??');
->'??hi'
rpad(str,len,padstr) //r rigth右边
left(str,len)
返回字符串str中最左边的len个字符
right(str,len)
返回字符串str中最右边的len个字符
substring(str,pos,len) = mid(str,pos,len)
从字符串 str的post位置起返回len个字符的子串
mysql >select substring('wuhan university',5,6);
->'n univ'
ltrim(str)
返回移除了领头的空格字符后的str
mysql>select ltrim(' 武汉大学');
->'武汉大学'
rtrim(str)
返回移除了最后的空格字符后的str
trim([[both|leading|trailing][remstr]from]str)
移除字符串str中所有的remstr前缀或后缀。然后将其返回,如果没有任何both,leading或trailing修饰符被给出,both被假定,如果remstr没有被指定,空格将被移除:
mysql>select trim(' bar ');
->'bar'
mysql>select trim(leading 'x' from 'xxxbarxxx');
->'varxxx'
mysql>select trim(both 'x' from 'xxxbarxxx');
->'bar'
mysql>select trim(trailing 'xyz' from 'barxxyz');
->'barx'
space(n)
返回有n空格字符组成的字符串
mysql>select space(6);
->' '
replace(str,from_str,to_str)
repeat(str,count)
返回一个由重复了count次的字符串str组成的字符串,如果count<=0,返回一个空字符串,如果str或count是null,返回值也为null
mysql>select repeat('mysql',3);
->'mysqlmysqlmysql'
replace(str,from_str,to_str)
在字符串str中所有出现的字符串from_str均被to_str替换,然后返回这个字符串
mysql>select replace('www.mysql.com','w','ww');
->'wwwwww.mysql.com'
mysql>select replace('www.mysql.com','my','your');
->'www.yoursql.com'
reverse(str)
以颠倒的字符顺序然后返回
lcase(str)
lower(str)
把当前字符所有字符改为小写,然后返回
ucase(str)
upper(str)
依照当前字符集把str改为大写,然后返回
load_file(file_name)
读入文件,将文件内容作为一个字符串返回
文件不存在,或没有权限,就返回空null
mysql>update tb1_name
set blob column=load_file("/tmp/picture")
where id=1;
----------------------------------
mysql数字函数
+-*/
abs(x) 返回x的绝对值
div 整除
mysql>select 5 div 2
->2
mod(n,m)
%
取模,返回n被m除后的余数
floor(x)
返回不大于x的最大整数值
msyql>select flor(1.23);
->1
msyql>select flor(-1.23)
->-2
ceiling(x)
返回大于x的最小整数
mysql>select ceiling(1.23);
->2
round(x)
将参数x四舍五入到最近的整数,然后返回
round(x,d)
将一个数字四舍五入到d个小数后返回
exp(x)
返回值e(自然对数的底)的x次方
mysql>select exp(2);
->7.38905
ln(x)
log(x)
返回x自然对数
log(b,x)
返回x任意底b的对数
mysql>select log(2,65536);
->16.0000000
mysql>select log(1,100);
->null
sqrt(x)
返回x的非负平方根
pi()
返回pi(圆周率)值,缺省是显示5位小数,双精度
提前精度
mysql>select pi()+0.0000000000000000000
cos(x)
余弦
sin(x)
正弦
tan(x)
acos(x)
asin(x)
反正弦
atan(x)
------
round(),round(n)
返回一个范围在0-1.0之间的随机浮点值
参数n被指定,它被当做种子值使用(用于产生一个可重复的数值)
mysql>select round(100);
->产生随机数
--------------------------------
mysql日期时间函数
now()
sysdate()
current_timestamp
yyyy-mm-dd hh:mm:ss或
yyyymmddhhmmss
mysql>select now();
->2006-11-23 10:54:01
mysql>select now() + 0
->20061123105401
curdate()
current_date
yyyy-mm-dd
yyyymmdd
curtimw()
current_time
hh:mm:ss
hhmmss
----------------------------
mysql转换函数
mysql>select 1+'1';
->2
mysql>select concat("hello you",2);
->"hello you 2"
cast(expression as type)
convert(expression, type)
type可以是:
char,date,datetime,signed{int},time,unsigned{int}
mysql>select cast(1-2 as unsigned)
->1844671107867311213
mysql>select cast(cast(1-2 as unsigned) as int);
->-1
database()
mysql>select datebase();
->返回当前数据库
user()
system_user()
session_user()
返回当前mysql用户名
password(str)
old_password(str)
从纯文本口令str计算一个口令字符串,这个函数用于对存储到授权表user的password列中的mysql口令进行加密
mysql>select password('badpwd');
->'1adsf51adsf5sad5f' mysql其他函数 建议参考手册
相关阅读 更多 +