2012-04-30 38 views
2

我有一個數據庫,其中一個字段包含逗號分隔列表,我想規範化。本場將是這個樣子......在MySQL中規範化日期,其中一列包含逗號分隔項

16-BIT, 20 MHz, MICROPROCESSOR, PQFP100 

它不會總是有相同數量的逗號分隔的項目,但我關心的唯一項目,和一個我想拉出來和規範始終是在'PQFP100'以上的情況下將成爲最後一個。

我想我理解sql來獲取列並將其放入另一個表中,但我不知道如何只選擇PQFP100部分。這裏是我迄今爲止...

insert ignore into part_pkg (pkg_name) 
select part_desc 
from part_raw 
group by pkg_name; 

我想我需要在「從part_raw」部分的東西,但甚至不知道從哪裏開始:)

但願這是非常明顯的。由於

回答

3

,如果你選擇這樣的:

select substring_index('16-BIT, 20 MHz, MICROPROCESSOR, PQFP100',',',-1) 

你會得到這樣的:

PQFP100 

所以INSERT語句必須是這樣的:

insert ignore into part_pkg (pkg_name) 
select substring_index(part_desc',',',-1) 
from part_raw 
group by pkg_name; 
+0

剛剛嘗試過,感謝一大堆!我確實必須將'substring_index'改爲大寫才能讓它工作。 –

+0

沒問題。很高興提供幫助 – Arion

0

試試這個:

insert ignore into part_pkg (pkg_name) 
select SUBSTRING_INDEX(part_desc, ',', -1) 
from part_raw 
group by pkg_name; 
+0

謝謝了,Gustavo ......你的進來只是在公認的答案後面,但仍然幫助 –