php - 在 SQL 中搜索列中的数据行

标签 php mysql sql regex

好吧 - 因为我似乎让人们对我的目标感到困惑,所以我将提供这个起点:

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/

相关文章:

php - 使用 PHP ping 数千个网站的最快方法

mysql - 在mysql中传递变量时出错

mysql - 合并具有不同列数的两个查询

php - 通过Mysql数据库点击计数器

php - 使用PHP API可恢复上传到Google Cloud Storage

php - php中不同手机使用html5 input[type=file]上传,最后type不一样

mysql - 在MySQL中进行特殊排序,3个随机最高分,比所有随机

mysql - MySQL 5.0 更新到 5.5 时出现问题

MySQL 触发器无法更新触发器分配给的同一表中的行。建议的解决方法?

mysql - django 中的强制索引