elt mysql 大于等于_Mysql 函数使用记录(二)——ELT()、FIELD()、IFNULL()

本文介绍了在MySQL中如何使用ELT(), FIELD(), 和 IFNULL()函数来实现特定的逻辑。ELT()根据给定的索引返回字符串,FIELD()返回字符串在参数列表中的索引,而IFNULL()用于处理NULL值,提供默认返回值。通过这些函数,可以在查询中灵活处理数据,特别是在没有单独的来源表时,从订单类型编码获取来源名称。" 111956534,10293635,OpenCV Mat 赋值与类型详解,"['OpenCV', '图像处理', 'C++']
摘要由CSDN通过智能技术生成

昨天在对一业务修改的过程中想到用DECODE()来实现效果,转眼发现目前使用的是Mysql库,经过查阅,最终用ELT()、FIELD()、IFNULL()函式来实现需求。现对其做一个记录。

语法:

ELT(n,str1,str2,str3,...):如果n=1,则返回str1,如果n=2,则返回str2,依次类推。如果n小于1或大于引数个数,返回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,str1,str2,str,str3,str4...) :返回str在后面的引数列(str1,str2,str,str3,str4...)中的索引,起始索引为1。如果未在引数列中发现str则返回0。

mysql > SELECT FIELD( ' halo ' , ' hello ' , ' halo ' , ' test ' , ' world ' );

+ -- --------------------- ----------------------+

| FIELD( ' halo ' , ' hello ' , ' halo ' , ' test ' , ' world ' ) |

+ ---------------------------------------------+

| 2 |

+ -- -------------------------------------------+

1 row in set

mysql >

IFNULL(expr1,expr2):如果expr1是NULL,则返回expr2,如果expr1不是NULL,则返回expr1。IFNULL()返回一个数字或字串值,取决于它被使用的上下文环境。

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,返回值1,值2,返回值2...,预设值);

在Mysql中呢,我们需要ELT()、FIELD()来实现,必要的时候还会用到IFNULL()来实现最终效果。对于上述需求,我们可以采取以下sql来实现:

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

记录完毕!^_^~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值