zoukankan      html  css  js  c++  java
  • mysql实现随机把字段值插入指定表

    今天在一个群里,一个小伙伴问了一个问题,mysql怎么随机把字母A或者B插入到表中的某个字段中去

    案例如下:

    INSERT INTO t_rand(sex)
    VALUES (ELT(
    CEILING(rand() * 2),'男','女'
    )
    )

    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;

    https://www.jianshu.com/p/c3cf185f9edb

    https://www.it610.com/article/1280658313272377344.htm

    作者:Agoly
    出处:https://www.cnblogs.com/qmfsun/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    Topcoder SRM656div1 250 ( 期望DP )
    SCAU 2015 GDCPC team_training1
    第五次群赛暨清明节专场
    HDU 2783 You’ll be Working on the Railroad(最短路)
    HDU 4013 Distinct Subtrees(树的最小表示)
    HDU 4014 Jimmy’s travel plan(图计数)
    SCAU 2015 GDCPC team_training0
    HDU 1024 Max Sum Plus Plus (递推)
    UVA 12849 Mother’s Jam Puzzle( 高斯消元 )
    HDU 4285 circuits( 插头dp , k回路 )
  • 原文地址:https://www.cnblogs.com/ryyy/p/14217801.html
Copyright © 2011-2022 走看看