mysql 插入指定值_mysql实现随机把字段值插入指定表
本站寻求有缘人接手,详细了解请联系站长QQ1493399855
今天在一个群里,一个小伙伴问了一个问题,mysql怎么随机把字母A或者B插入到表中的某个字段中去
案例如下:
INSERT INTOt_rand(sex)VALUES(ELT(CEILING(rand() * 2),'男','女')
)
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 setmysql>
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 |
IFNULL(expr1,expr2):如果expr1是NULL,则返回expr2,如果expr1不是NULL,则返回expr1。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
mysql> SELECT IFNULL(NULL,8);+----------------+
| IFNULL(NULL,8) |
+----------------+
| 8 |
1 row in setmysql> SELECT IFNULL('hello','world');+-------------------------+
| IFNULL('hello','world') |
+-------------------------+
| hello |
1 row in setmysql> SELECT IFNULL(null,'world');+----------------------+
| IFNULL(null,'world') |
+----------------------+
| world |
应用:
如:订单记录中存储了该订单的来源类型编码,现需将其来源名称在页面列表中展示,来源信息并未单独建表存储,现需将查询语句做出修改以达到目的:
在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;