我有一个MySQL表名data_car
。表数据如下所示:
id name car
1 john BMW, Toyota
2 terry Nixan, Toyota
我的问题是如何从汽车中选择特定的数据。例如,我有一个包含丰田,宝马,日产的组合框标题汽车,我选择丰田所以“名字”人包含价值丰田将显示在我的程序。
我想要的输出如下:
name: john car:toyota payment:$1000
但不幸的是,当我在组合框中选择丰田时,结果总是宝马,而且总是这样出现:
name : john car:toyota,BMW payment:$1000
我的问题是,我能从那一栏中选择丰田的价值吗?
发布于 2017-05-22 13:20:07
您可以像这样使用PHP来执行它:
foreach ($values as $key => $value) {
$cars = explode(',', $value['car']);
foreach ($cars as $car) {
switch ($car) {
case 'toyota':
$values[$key]['car'] = $car;
break;
default:
# code...
break;
}
}
}
我建议您重构数据库,在多到多的关系中转换这些数据。
也见
发布于 2017-05-22 13:29:05
如果你重新设计你的数据库会更好,就像这样:
CREATE TABLE drivers (
driverid int(11) UNSIGNED NOT NULL auto_increment,
driver varchar(64),
PRIMARY KEY (driverid)
);
CREATE TABLE cars (
carid int(11) UNSIGNED NOT NULL auto_increment,
car varchar(16),
PRIMARY KEY (carid)
);
CREATE TABLE driver_car (
driverid int(11),
carid int(11)
);
发布于 2017-05-22 13:39:12
如果您想作为select执行此操作,然后连接到您的成本表中,那么您可以使用SQL拆分字符串,然后将一个外部引用放到成本上。这样可以避免重新创建表,尽管如上所述,这将是首选的方法。
例:
SELECT id, name,
PARSENAME(REPLACE(Split.a.value(',', 'VARCHAR(max)'),'-','.'),1) 'car'
FROM
(
SELECT id, name,
CAST ('<M>' + REPLACE([car], ',', '</M><M>') + '</M>' AS XML) AS Data
FROM [table]
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
https://stackoverflow.com/questions/44113848
复制相似问题