1. 程式人生 > 實用技巧 >mysql的合併欄位,並根據where查詢合併後的欄位

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