zoukankan      html  css  js  c++  java
  • MySQL把多个字段合并成一条记录的方法

    在mysql中字段合并可以使用很多函数来实现,如可以利用 GROUP_CONCAT或一些方法,下面本文章简单的介绍一下。
     

    创建数据库

     代码如下 复制代码

    CREATE TABLE IF NOT EXISTS `tet` (

      `id` int(11) NOT NULL,

      `name` varchar(255) NOT NULL,

      `url` varchar(255) NOT NULL

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    转存表中的数据 `tet`


    INSERT INTO `tet` (`id`, `name`, `url`) VALUES

    (1, '百度', 'http://www.111cn.net '),

    (0, 'google', 'http://www.google.com.hk'),

    (3, '400电话', 'http://www.111cn.net ');

    方法一:

     代码如下 复制代码

    SELECT GROUP_CONCAT ( name ) name

    FROM tet

    WHERE 11 = 1

    LIMIT 0 , 30

    结果:name 百度,google,400电话。 GROUP_CONCAT还可以用SEPARATOR  关键词指定连接符,sql语句如下:


    SELECT GROUP_CONCAT ( url SEPARATOR " @ " ) url

    FROM tet

    WHERE 11 = 1

    LIMIT 0 , 30

    结果: http://www.111cn.net @http://www.google.com.hk@ http://www.111cn.net 方法二:


    SELECT GROUP_CONCAT ( name ) name

    FROM tet

    WHERE 11 = 1

    GROUP BY id

    LIMIT 0 , 30

    结果:google 百度 400电话 关于MySQL数据库将多条记录的单个字段合并成一条记录的操作就介绍到这里了,希望本次的介绍能够对您有所收获!

    方法二,concat 函数

    使用方法:
    CONCAT(str1,str2,…) 

    返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

    注意:
    如果所有参数均为非二进制字符串,则结果为非二进制字符串。
    如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
    一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:
    SELECT CONCAT(CAST(int_col AS CHAR), char_col)

    MySQL的concat函数可以连接一个或者多个字符串,如

     代码如下 复制代码

    mysql> select concat('10');
    +--------------+
    | concat('10') |
    +--------------+
    | 10   |
    +--------------+
    1 row in set (0.00 sec)

    mysql> select concat('11','22','33');
    +------------------------+
    | concat('11','22','33') |
    +------------------------+
    | 112233 |
    +------------------------+
    1 row in set (0.00 sec)

    MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL

     代码如下 复制代码
    mysql> select concat('11','22',null);
    +------------------------+
    | concat('11','22',null) |
    +------------------------+
    | NULL   |
    +------------------------+
    1 row in set (0.00 sec)

    MySQL中 concat_ws 函数

    使用方法:

    CONCAT_WS(separator,str1,str2,...)

    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
    注意:
    如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

    如连接后以逗号分隔

     代码如下 复制代码

    mysql> select concat_ws(',','11','22','33');

    +-------------------------------+
    | concat_ws(',','11','22','33') |
    +-------------------------------+
    | 11,22,33 |
    +-------------------------------+
    1 row in set (0.00 sec)

    和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL
    mysql> select concat_ws(',','11','22',NULL);
    +-------------------------------+
    | concat_ws(',','11','22',NULL) |
    +-------------------------------+
    | 11,22 |
    +-------------------------------+
    1 row in set (0.00 sec)

  • 相关阅读:
    刘备和诸葛亮闹翻:无意说出蜀国灭亡的根源?
    亚马逊为什么能吞噬世界?贝索斯有这么一种独特的战略思维
    现在的社会,能负债的人,一定是有本事的人
    富士康为何转向美国:人口红利消失 炒房带来恶性循环
    中国华为:硅谷风混搭国企作派
    亚马逊拟斥资15亿美元建航空货运中心
    比数字工具更好用的纸和笔
    张小龙的克制 小程序 微信
    阿里前CEO卫哲用自己10余年经历,倾诉B2B的三差、四率、两大坑
    关于自信的励志名言
  • 原文地址:https://www.cnblogs.com/hanlong/p/5711380.html
Copyright © 2011-2022 走看看