我有一个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
我的问题是,我可以从该列中选择丰田值吗?
答案 0 :(得分:0)
您可以使用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;
}
}
}
我建议您重新构建数据库,将数据转换为 多对多的关系。
另见:
答案 1 :(得分:0)
如果重新设计数据库会更好,如下所示:
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)
);
答案 2 :(得分:0)
如果您想以select形式执行此操作,然后加入到cost表,那么可以使用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)
答案 3 :(得分:0)
MySQL 8更新:
SELECT name, REGEXP_SUBSTR(car, 'Toyota') as carname FROM data_car