zoukankan      html  css  js  c++  java
  • mysql的合并字段,并根据where查询合并后的字段

     mysql合并字段一般使用Concat和Concat_ws这个方法,下面就是它的区别:

    1、concat函数可以连接一个或者多个字符串,如:

    select concat('11','22','33');--112233

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

    2、concat_ws()函数

    select concat_ws(',','11','22','33');--11,22,33
    
    select concat_ws('|','11','22','33');--11|22|33

    和concat不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL

    3、group_concat()函数,可用来行转列

    create table aa(
      id int,
      name VARCHAR(255)
    );
    
    insert  into aa values(1,10);
    insert  into aa values(1,10);
    insert  into aa values(1,20);
    insert  into aa values(1,30);
    insert  into aa values(3,30);
    insert  into aa values(5,60);
    insert  into aa values(5,90);
    insert  into aa values(6,990);
    
    1 以id分组,把name字段的值打印在一行,逗号分隔(默认)
    select id,group_concat(name) from aa group by id;
    
    2 以id分组,把name字段的值打印在一行,分号分隔
    select id,group_concat(name separator ';') from aa group by id;
    
    3 以id分组,把去冗余的name字段的值打印在一行,逗号分隔
    select id,group_concat(distinct name separator ';') from aa group by id;
    
    4 以id分组,把name字段的值打印在一行,*号分隔,以name排倒序
    select id,group_concat(name order by name desc separator "*") from aa group by id;

    mysql的合并字段,并根据where条件查询合并后的字段

    我们在做项目的时候有可能遇到查询合并后的字段:

    select * from prospect WHERE concat_ws(' ',first_name,last_name) LIKE '%Lam Family3%'; --查询出有Lam Family3的字段

    转化成thinkphp的代码是:

    $full_name = Client::whereRaw("concat_ws(' ',first_name,last_name) LIKE '%$search%'")->select();

    参考链接:https://blog.csdn.net/vasilis_1/article/details/75305473

  • 相关阅读:
    POJ 2135 Farm Tour(最小费用最大流,变形)
    HDU 1503 Advanced Fruits (LCS,变形)
    HDU Senior's Gun (水题)
    POJ 3648 Wedding (2-SAT,经典)
    HDU 3549 Flow Problem 流问题(最大流,入门)
    解决在eclipse中导入项目名称已存在的有关问题
    如何将js导入时的小红叉去掉
    servlet传值到servlet传值问题
    转发重定向的用法
    parameter与attribute的使用场合(转载自草原和大树)
  • 原文地址:https://www.cnblogs.com/bushui/p/14125077.html
Copyright © 2011-2022 走看看