【发布时间】:2012-01-07 18:31:05
【问题描述】:
好的 - 因为我似乎让人们对我的目标感到困惑,所以我将提供这个起点:
SELECT `car_data` FROM `parts` WHERE `car_data` LIKE '%|2011|ford|%'
此语句返回适用于 2011 年福特的每个零件的 car_data。其中 ONE 行如下所示:
61156|SUV|2003|FORD|EXCURSION||6.0L DIESEL V8||||
61156|SUV|2011|FORD|EXCURSION||6.0L DIESEL V8||||
61156|SUV|2005|FORD|EXCURSION||6.0L DIESEL V8||||
61156|Truck|2001|GMC|SIERRA 2500 HD||6.6L DIESEL V8||||
61156|Truck|2002|GMC|SIERRA 2500 HD||6.6L DIESEL V8||||
61156|Truck|2007|DODGE|RAM 3500 PICKUP|ST|5.9L DIESEL L6||||
61156|Truck|2007|DODGE|RAM 3500 PICKUP|TRX4|5.9L DIESEL L6||||
61156|Truck|2003|FORD|F-250 SUPER DUTY PICKUP||6.0L DIESEL V8||||
61156|Truck|2011|FORD|F-250 SUPER DUTY PICKUP||6.0L DIESEL V8||||
61156|Truck|2005|FORD|F-250 SUPER DUTY PICKUP||6.0L DIESEL V8||||
请注意,此特定部件也适用于其他汽车(大多数都适用)。上面我的 SQL 调用返回的每一行数据都会返回与上述数据类似的结果。 car_data 是一个包含上述所有数据的大文本字段。
我需要过滤显示的每一行数据,并仅显示 2011 年福特的车型(分隔文本中的第 5 列)。示例:
EXCURSION
F-250 SUPER DUTY PICKUP
【问题讨论】:
-
F-250 SUPER DUTY PICKUP KING RANCH与F-250 SUPER DUTY PICKUP LARIAT不是不同的型号,还是没关系? -
真正的答案是将其移动到规范化的数据库结构中。为什么你不能这样做?
-
@CharlesSprayberry - 这些都不重要。我只需要该特定分隔字段中的唯一模型。
-
@JakeFeasel - 不幸的是 - 这个数据库(不是我创建的)已经投入生产很长时间了,我们无法改变结构。
-
即使您无法更改当前表的结构,也可能值得创建一个新表,其中包含该列中的数据以标准化形式。