1.条件判断函数if和ifnull
if函数用法是:if(expr,value1,value2),首先判断表达式的值,然后根据表达式的值返回value1和value2当中的某一个。
ifnull函数是用来判断一个字段是否为null值得,如果是null,则返回一个自定义的字符串。
下面来看例子:
root@localhost:3306 [(none)]>select if(1>2,'是','否'),if(1<2,'是','否'),if(strcm
p('test','test1'),'否','是')\G
*************************** 1. row ***************************
if(1>2,'是','否'): 否
if(1<2,'是','否'): 是
if(strcmp('test','test1'),'否','是'): 否
1 row in set (0.00 sec)
需要注意的是test<test1,所以返回值为true,第三个返回否。
下面的例子是ifnull函数的例子,它的原型是ifnull(src,dst),它将null值替换成制定的字符值或者字符串值。
root@localhost:3306 [(none)]>select ifnull(1,2),ifnull(null,10),ifnull(1/0,'wrong');
+-------------+-----------------+---------------------+
| ifnull(1,2) | ifnull(null,10) | ifnull(1/0,'wrong') |
+-------------+-----------------+---------------------+
| 1 | 10 | wrong |
+-------------+-----------------+---------------------+
1 row in set, 1 warning (0.02 sec)
2.case条件选择
case语法的使用方法如下:
case expt
when cond1
then x1
else x2
end
其中when的条件可以添加多个,else也是可选的,当满足条件cond1,则执行x1操作,否则执行x2操作,举例如下:
root@localhost:3306 [(none)]>select case 2 when 1 then 'one' when 2 then 'two' e
lse 'not1or2' end;
+---------------------------------------------------------------+
| case 2 when 1 then 'one' when 2 then 'two' else 'not1or2' end |
+---------------------------------------------------------------+
| two |
+---------------------------------------------------------------+
1 row in set (0.04 sec)
3.格式化函数format(x,n)
这个函数讲x的值进行格式化,并使用字符串的方式进行返回,如果n为0,则返回没有小数部分的数值。下面来看例子:
root@localhost:3306 [(none)]>select format(12.345,2),format(123.456789,4),format
(12.1,3);
+------------------+----------------------+----------------+
| format(12.345,2) | format(123.456789,4) | format(12.1,3) |
+------------------+----------------------+----------------+
| 12.35 | 123.4568 | 12.100 |
+------------------+----------------------+----------------+
1 row in set (0.00 sec)
4.进制之间进行转换的函数
conv函数讲数值进行进制之间的转换,conv函数的原型是conv(value,from_base,to_base),value的值可以是一个数字或者字符串,如果是一个字符串而且不规范的话,那么结果将返回0,如果任意一个基数的值为null,则返回值为null,基数的范围是2~36,下面来看例子:
root@localhost:3306 [(none)]>select conv('a',16,2),conv(15,10,2),conv(15,10,8),conv(15,10,16);
+----------------+---------------+---------------+----------------+
| conv('a',16,2) | conv(15,10,2) | conv(15,10,8) | conv(15,10,16) |
+----------------+---------------+---------------+----------------+
| 1010 | 1111 | 17 | F |
+----------------+---------------+---------------+----------------+
1 row in set (0.00 sec)
5.IP地址与字符串相互转换的函数
这个转换是个相互的过程,包含两个函数,一个是inet_aton(expr),另外一个是inet_ntoa(expr)函数,这两个函数的使用方法如下:
root@localhost:3306 [(none)]>select inet_aton('127.0.0.1'),inet_ntoa(2130706433);
+------------------------+-----------------------+
| inet_aton('127.0.0.1') | inet_ntoa(2130706433) |
+------------------------+-----------------------+
| 2130706433 | 127.0.0.1 |
+------------------------+-----------------------+
1 row in set (0.00 sec)
6.改变数据类型的函数convert和cast
cast的使用方法是cast(x as type);
convert的使用方法是convert(x type);
可以转换的类型有binary,char,date,time,datatime,decimal,signed,unsigned
下面来看例子:
root@localhost:3306 [(none)]>select cast(100 as char(2)),convert('1980-01-10 12:
12:12',time);
+----------------------+-------------------------------------+
| cast(100 as char(2)) | convert('1980-01-10 12:12:12',time) |
+----------------------+-------------------------------------+
| 10 | 12:12:12 |
+----------------------+-------------------------------------+
1 row in set, 1 warning (0.04 sec)
平时大概就这么多吧,还有一些特别常用的,类似show processlist,select version(),select user(),select database()等等的,没有写,这些想必也都知道,关于mysql内置的函数这部分大概就这几天的四篇文章吧,后续还有的话,再单独补上。