函数使用记录

明日在对一事情修改的历程中想到用DECODE()来落到实处效益,转眼发掘日前接纳的是Mysql库,经过查看,最后用ELT()、FIELD()、IFNULL()函数来达成需要。现对其做2个记下。

Mysql 函数使用记录(2)——ELT()、FIELD()、IFNULL(),eltifnull

明日在对1工作修改的进度中想到用DECODE()来贯彻效益,转眼发现脚下利用的是Mysql库,经过查阅,最后用ELT()、FIELD()、IFNULL()函数来完毕必要。现对其做贰个笔录。

语法:

ELT(n,str一,str二,str三,…)
:如果n=一,则赶回str一,假设n=2,则赶回str二,依次类推。倘诺n小于一或高出参数个数,再次来到NULL。ELT()是FIELD()的效用补偿函数。

mysql> SELECT ELT(3,'hello','halo','test','world');
+--------------------------------------+
| ELT(3,'hello','halo','test','world') |
+--------------------------------------+
| test                                 |
+--------------------------------------+
1 row in set

mysql>

FIELD(str,str一,str贰,str,str3,str肆…):重返str
在背后的参数列(str一,str二,str,str3,str四…)中的索引,伊始索引为壹。若是未在参数列中开掘str
则再次来到0。

mysql> SELECT FIELD('halo','hello','halo','test','world');
+---------------------------------------------+
| FIELD('halo','hello','halo','test','world') |
+---------------------------------------------+
|                                           2 |
+---------------------------------------------+
1 row in set

mysql> 

IFNULL(expr一,expr贰):假设expr一是NULL,则重返expr二,若是expr一不是NULL,则再次回到expr一。IFNULL()再次来到1个数字或字符串值,取决于它被应用的上下文情形。

mysql> SELECT IFNULL(NULL,8);
+----------------+
| IFNULL(NULL,8) |
+----------------+
|              8 |
+----------------+
1 row in set

mysql> SELECT IFNULL('hello','world');
+-------------------------+
| IFNULL('hello','world') |
+-------------------------+
| hello                   |
+-------------------------+
1 row in set
mysql> SELECT IFNULL(null,'world');
+----------------------+
| IFNULL(null,'world') |
+----------------------+
| world                |
+----------------------+
1 row in set
mysql> 

应用:

  如:订单记录中储存了该订单的发源类型编码,现需将其根源名称在页面列表中呈现,来源音讯并未有单独建表存款和储蓄,现需将查询语句做出修改以达到指标:

  在Oracle中我们得以用decode()函数来赢得到来源名称:decode(条件,值一,重返值1,值2,重返值2…,缺省值);

  在Mysql中呢,大家须求ELT()、FIELD()来完毕,须求的时候还会用到IFNULL()来兑现最后效果。对于上述要求,大家能够运用以下sql来落到实处:

SELECT *,IFNULL(ELT(FIELD(type,'1','2','3','4'),'来源A','来源B','来源C','来源D'),'未知') name from order;

笔录达成!^_^~

  

 

函数使用记录(2)——ELT()、FIELD()、IFNULL(),eltifnull
后天在对一职业修改的进程中想到用DECODE()来兑现效益,转眼开采脚下应用的是My…

语法:

ELT(n,str1,str二,str三,…)
:要是n=一,则赶回str一,借使n=2,则赶回str二,依次类推。假设n小于壹或高于参数个数,再次回到NULL。ELT()是FIELD()的意义补偿函数。

mysql> SELECT ELT(3,'hello','halo','test','world');
+--------------------------------------+
| ELT(3,'hello','halo','test','world') |
+--------------------------------------+
| test                                 |
+--------------------------------------+
1 row in set

mysql>

FIELD(str,str①,str贰,str,str三,str四…):再次回到str
在前面包车型大巴参数列(str壹,str贰,str,str叁,str四…)中的索引,早先索引为一。借使未在参数列中窥见str
则再次回到0。

mysql> SELECT FIELD('halo','hello','halo','test','world');
+---------------------------------------------+
| FIELD('halo','hello','halo','test','world') |
+---------------------------------------------+
|                                           2 |
+---------------------------------------------+
1 row in set

mysql> 

IFNULL(expr一,expr2):倘若expr壹是NULL,则再次回到expr二,假诺expr一不是NULL,则再次回到expr一。IFNULL()再次回到1个数字或字符串值,取决于它被采纳的上下文情况。

mysql> SELECT IFNULL(NULL,8);
+----------------+
| IFNULL(NULL,8) |
+----------------+
|              8 |
+----------------+
1 row in set

mysql> SELECT IFNULL('hello','world');
+-------------------------+
| IFNULL('hello','world') |
+-------------------------+
| hello                   |
+-------------------------+
1 row in set
mysql> SELECT IFNULL(null,'world');
+----------------------+
| IFNULL(null,'world') |
+----------------------+
| world                |
+----------------------+
1 row in set
mysql> 

应用:

  如:订单记录中积存了该订单的来自类型编码,现需将其根源名称在页面列表中显示,来源音讯未有单独建表存款和储蓄,现需将查询语句做出修改以实现指标:

  在Oracle中大家得以用decode()函数来博取到来源名称:decode(条件,值一,重临值1,值二,再次来到值二…,缺省值);

  在Mysql中呢,大家须求ELT()、FIELD()来贯彻,须要的时候还会用到IFNULL()来贯彻最后效果。对于上述要求,大家能够使用以下sql来促成:

SELECT *,IFNULL(ELT(FIELD(type,'1','2','3','4'),'来源A','来源B','来源C','来源D'),'未知') name from order;

记录实现!^_^~