由於很多業務表因為歷史原因或者效能原因,都使用了違反第一正規化的設計模式。即同乙個列中儲存了多個屬性值(具體結構見下表)。
這種模式下,應用常常需要將這個列依據分隔符進行分割,並得到列轉行的結果。
表資料:
id value
1 tiny,small,big
2 small,medium
3 tiny,big
期望得到結果:
id value
1 tiny
1 small
1 big
2 small
2 medium
3 tiny
3 big
select a.id,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;
mysql 把字段進行逗號分隔成多條資料
由於很多業務表因為歷史原因或者效能原因,都使用了違反第一正規化的設計模式。即同乙個列中儲存了多個屬性值 具體結構見下表 這種模式下,應用常常需要將這個列依據分隔符進行分割,並得到列轉行的結果。表資料 id value 1 tiny,small,big 2 small,medium 3 tiny,bi...
MySQL 根據欄位中的逗號分隔成多條資料
將資料庫表的字段進行切割,分成多條資料。表資料 test表 期望得到的查詢結果為 id name 1 張三 1 李四 1 王五 2 肖1 2 肖2 sql語句 select a.id,substring index substring index a.name,b.help topic id 1 1...
mysql逗號分隔List欄位轉多行
具體的邏輯我還沒整明白,先記上再說,親測可用。select a1.id,a1.job depends from job version history a1 where a1.id in 1655,1656 id job depends 1655 353,3,532 1656 484,5,567se...