利用substring_index及笛卡爾積來迴圈拆分sql欄位;
首先建立幾條資料
idvalue
computer
5,ddd,eee
phone
12,3333,11
pipe
234
假如我們需要查詢的字段in phone欄位的值(12,3333,11),我們可以用一下方法
準備示例資料
create table tbl_name (id int ,msize varchar(100));
insert into tbl_name values (1,'tiny,small,big');
insert into tbl_name values (2,'small,medium');
insert into tbl_name values (3,'tiny,big');
實現行列轉換的sql
select * from table where phone in (
select
substring_index(substring_index(a.msize,','
,b.help_topic_id+1),',',-1)
from
tbl_name a
join
mysql.help_topic b
on b.help_topic_id < (length(a.msize) - length(replace(a.msize,',',''))+1)
order by a.id;
)
原理分析
這個join最基本原理是笛卡爾積。通過這個方式來實現迴圈。 以下是具體問題分析: length(a.size) - length(replace(a.msize,』,』,」))+1 表示了,按照逗號分割後,改列擁有的數值數量,下面簡稱n join過程的偽**:
根據id進行迴圈
id = id +1
}
以上及實現了字段按逗號分隔來用作in的子查詢 mysql處理以逗號隔開的字段內容
有乙個字段儲存了checkbox內容,比如職業目標選擇對於資料庫欄位otworkgoal,儲存了1,2,3,4內容 現在需要使用純mysql語句,將字段otworkgoal根據內容,進行翻譯成中文的內容。可使用find in set 函式 concat ws 函式實現。find in set 可參考...
MySQL 模糊查詢某字段用逗號隔開
1.查詢pnum欄位中包含3或者9的記錄 select from test where find in set 3 pnum or find in set 9 pnum select from test where concat pnum,regexp 0 9 3 9 0 9 2.cover欄位為 ...
MySQL 模糊查詢某字段用逗號隔開
1.查詢pnum欄位中包含3或者9的記錄 select from test where find in set 3 pnum or find in set 9 pnum select from test where concat pnum,regexp 0 9 3 9 0 9 2.cover欄位為 ...