2013-11-22 72 views
1

我得有文本串這樣的:具體分割記錄(字符串)分成幾個領域

「澳大利亞/悉尼/天2738/Jose和卡林」

我需要拆分它到幾列。但這是棘手的部分。字符串也可能看起來像

「英國/曼徹斯特/中心/第627天/盧卡斯和尼科爾」。

所有字符串都一個模板,我想:

「%/%/ d%/%和%」

,我需要每一個 「%」 移動到另一個現場/列。

「英國」, 「曼徹斯特/中心」, 「627天」, 「盧卡斯」, 「妮可」

inb4:用mysql 5.5 謝謝! Nik35。

回答

0

MySQL沒有字符串的拆分功能,但here您可以看到一個用戶定義的函數,您可以使用它來完成您的工作。

例如:

select SPLIT_STR(SPLIT_STR(ColumnA, "/D",1), "/", 1), 
CONCAT(SPLIT_STR(SPLIT_STR(ColumnA, "/D",1), "/", 2),'/', 
    SPLIT_STR(SPLIT_STR(ColumnA, "/D",1), "/", 3)), 
CONCAT('D',SPLIT_STR(SPLIT_STR(ColumnA, "/D",2), "/", 1)), 
SPLIT_STR(SPLIT_STR(ColumnA, "/D",2), "/", 2) 
from table1 

OUTPUT(SQL fiddle):

Australia Sydney/    Day 2738 Jose and Carlin 
UK   Manchester/Centre Day 627  Lucas and Nicole 
+0

我有幾個申請動態delimetters第二的感覺。它可以包含第二個例子中顯示的delimetter「/」。 SPLIT_STR可以處理這個嗎? – NikVankevsky

+0

非常感謝!這對我很好。 – NikVankevsky

+0

不客氣。也許這是我的最後更新更好。 – neutrino

0

不知道,如果MySQL本身能做到這一點。但是你可以添加一個用戶定義的函數來實現它,如果你有固定數量的由/分隔的字段,就更容易。如果你想要它的動態解決方案,那麼這種方法很難實現,甚至你的腳本語言必須小心處理,而不僅僅是查詢。

只是如果它幫助了一點方向:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

+0

那麼,你已經發布了比我相同的答案... – neutrino

+0

我得到了一個更新,同時撰寫我的答案。但好東西..這個帖子真的很好。但你應該總是給源,因此我發佈了URL。 – crazykru

+0

我在我的第一個答案中發佈了作者的URL ...檢查鏈接,並親自查看它... – neutrino