2014-10-29 86 views
0

我有返回MYSQL選擇之間「」多值

a:2:{i:0;s:10:"Properties";i:1;s:14:"Movable Assets";} 

一個專欄中,我想只返回:

Properties, Movable Assets 

如何使用SELECT語句檢索值在「符號之間

+1

這將是相當困難的考慮的事實,格局可能不會在所有情況下相同。而在MySQL中,沒有這樣的爆炸功能來完成這項工作。最簡單的事情就是使用應用程序層來處理這個問題。 – 2014-10-29 07:39:26

+0

我無法使用應用程序層,這是使用WordPress插件,它只接受SQL來輸出報告 – 2014-10-30 09:55:47

回答

1

使用SUBSTRING_INDEX()

SUBSTRING_INDEX()需要一個字符串參數,後跟一個分隔符以及要返回的零件數量。在使用分隔符分割字符串之後,該部分數量將作爲單個字符串返回。

select concat( 
    SUBSTRING_INDEX( 
     SUBSTRING_INDEX( 
      SUBSTRING_INDEX( 
       'a:2:{i:0;s:10:"Properties";i:1;s:14:"Movable Assets";}', 
       '"', 
       4 
      ), 
      '"', 
      2 
     ), 
     '"', 
     -1 
    ), 
    ",", 
    SUBSTRING_INDEX(
     SUBSTRING_INDEX( 
      SUBSTRING_INDEX(
       'a:2:{i:0;s:10:"Properties";i:1;s:14:"Movable Assets";}', 
       '"', 
       4 
      ), 
      '"', 
      4 
     ), 
     '"', 
     -1 
    ) 
); 
+0

謝謝,這只是工作,但我仍然有一個問題,對不起,我沒有在原來的問題中提到它。還有條目「物業」和單獨的「可動資產」。在使用上述答案時,這些答案將作爲「屬性,屬性」和「可移動資產,可移動資產」返回。有沒有解決的辦法?我在此之前使用了一個case語句,但我無法過濾它。我試着添加一個AND entry_id ='Properties',然後entry_value else,對於'Movable Assets'也是一樣,但是它們一直返回重複的結果 – 2014-10-30 09:45:24

+0

這裏是CASE語句: MAX(field_id = 79 then case select select concat( SUBSTRING_INDEX SUBSTRING_INDEX( SUBSTRING_INDEX( entry_value, ' 「',4 ) '」',2 ) '「', -1 ) 」,「, SUBSTRING_INDEX( SUBSTRING_INDEX ( SUBSTRING_INDEX( entry_value, ' 「',4 ) '」',4 ) '「', -1 ) )) 端)作爲InterestedIn, – 2014-10-30 09:47:18

+0

查看新問題HTTP ://堆棧溢出。COM /問題/ 26650251/MySQL的選擇用字合帶的標誌 - 中之列的,雜亂的文字 – 2014-10-30 10:15:56

2

這些是序列化的值,你可以使用PHP來獲得你想要的結果。

你可以使用,unserialize這將返回一個數組,然後你可以使用implode獲得逗號分隔值。

example