好吧 - 因为我似乎让人们对我的目标感到困惑,所以我将提供这个起点:
SELECT `car_data` FROM `parts` WHERE `car_data` LIKE '%|2011|ford|%'
此语句返回适用于 2011 年福特的每个部件的 car_data。其中其中一行如下所示:
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
最佳答案
是的,正如 Jake Feasel 所指出的,对数据进行标准化,或者:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(data, '|', 4),'|',-5) as model
FROM data
GROUP BY SUBSTRING_INDEX(SUBSTRING_INDEX(data, '|', 4),'|',-5)
关于php - 在 SQL 中搜索列中的数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771996/