2016-07-15 143 views
-1

MySql有一個函數CONCAT_WS,我用它將一個分隔符的多個字段導出到一個字段中。很棒!插入一個分隔符

有多個字段被存儲在數據庫中查詢我有數據,我需要單獨提取每個字段,但在每個字段數據需要包括一個分隔符。我可以肯定地進行連接,但是如果我的數據需要多達100個唯一值,則需要一段時間才能進行設置。下面是我正在談論的一個例子

Stored Data 01020304050607      
End Result 01,02,03,04,05,06,07 

Stored Data 01101213 
End Result 01,10,12,13 

在MySQL中是否有一個函數可以實現上述功能?

+1

然後問題是:爲什麼你以這種方式存儲數據,如果你需要以一種非常不同的格式檢索它? – Jocelyn

+0

你將不得不編寫一個存儲函數來分割它。 –

+0

更好,但是當你拆分它時,不要用CSV保存你的數據。創建新的行。如果您發現自己每天都在使用find_in_set和group_concat來保存數據,那麼您可能會做錯某些事情。如果是這樣,請參見[Junction Tables](http://jackoverflow.com/a/32620163)。對於一對多,而不是多對多,相同的概念。不要保存CSV數據。 – Drew

回答

0

我對mysql並不熟悉,但在正則表達式函數有用之前,我已經看到類似這樣的問題。有用戶定義的函數可以使用類似Oracle的正則表達式函數,因爲它們在mysql中的支持很弱。在這裏看到:https://github.com/hholzgra/mysql-udf-regexp

所以你可以做這樣的事情:

select trim(TRAILING ',' FROM regexp_replace(your_column, '(.{2})', '\1,')) 
from your_table; 

這增加了一個逗號,然後每隔2字符砍掉最後一個。也許這會給你一些想法。

相關問題