2017-08-28 28 views

回答

0

如果列中的數據始終結構,你可以定義自己的函數列分成多列:

DELIMITER $$ 
CREATE DEFINER=CURRENT_USER FUNCTION `SPLIT_STR`(
    x VARCHAR(255),  # Input 
    delim VARCHAR(12), # Delimiter 
    pos INT    # Position or Field 
) RETURNS varchar(255) CHARSET latin1 
    DETERMINISTIC 
BEGIN 
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), 
     LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), 
     delim, ''); 
END$$ 
DELIMITER ; 

如下使用它:

SELECT SPLIT_STR(col1, ',', 2) FROM table; # Results in 'b' 
+0

這是否工作在MySQL的? –

+0

是的。我在我自己的MySQL數據庫中使用這個函數db –

+0

非常感謝。這是我在mysql中的第一個自定義函數,你的答案完美無缺。所以你應該得到賞金和讚賞。 –

0

您可以使用explode(',',$ data);功能
但我推薦的這個方法來使用多個數據工作:

<?php 
// Your data 
$data = 'a,b,c,d'; 
// Convert string to array 
$data = explode(',', $data); 

// Encode data and save it into database 
$encoded_data = json_encode($data); 

// Return data from database and convert it to array 
$decoded_data = json_decode($encoded_data); 

// Get item from returned array 
echo $decoded_data[2]; 

echo '<pre>'; 
print_r($encoded_data); 
echo '<br>'; 
print_r($decoded_data); 
echo '</pre>'; 
+1

當我們使用php時是個好主意。但是當我們用另一種語言時沒有用。這就是爲什麼我在標籤中提到jsp。 –