读取mysql表直到第一个逗号

时间:2011-07-23 23:04:16

标签: php mysql explode

我有这个问题:

$sql = "SELECT * FROM tutorials WHERE ( device LIKE '%".$device."%' AND version LIKE '%".$version."%' AND firmware LIKE '%".$firmware."%' ) LIMIT 1";

表格:

device | a, b, c, d
version | 2, 3, 4
firmware | 5

现在我希望第一个字符串来自设备(a),版本(2)和固件(5)直到第一个逗号,或者如果整个文本没有逗号。

我想到了explode(),但我真的不知道。我更喜欢php,因为我想回应数字。

1 个答案:

答案 0 :(得分:2)

MySQL解决方案:

SELECT  SUBSTRING_INDEX(`device`, ',', 1),
    SUBSTRING_INDEX(`version`, ',', 1),
    SUBSTRING_INDEX(`firmware`, ',', 1)
FROM `tutorials` WHERE `id`=123 LIMIT 1 /*
    Why LIMIT? `id` should be unique */

PHP解决方案:

function first_value($str) {
    $pos = strpos($str, ',');
    if ($pos !== false)
        return substr($str, 0, $pos);
    return $str;
}
$q = mysql_query('SELECT * FROM `tutorials` WHERE `id`='. (int)$id .' LIMIT 1 ');
$arr = mysql_fetch_array($q);

$arr['device'] = first_value($arr['device']); // etc

但正如Kerrek SB所说,你的桌子应该正常化。