我如何在Mysql中进行此CONCAT比较?

时间:2012-06-15 11:04:53

标签: php mysql

我有一个自动填充搜索字段,用户可以使用它来查找不同的价目表。

我想在数据库中比较的字段是: *品牌名称(String) * Modelyear(String) *车辆类型(int)

车辆类型为0,1或2.这是(大篷车,移动房屋,拖车)

因此用户可能会搜索: “Adria 560 2005 Caravan”

我的第一个想法是做一个类似CONCAT的比较。 在哪里CONCAT(品牌,模式,类型)喜欢'%Adria 560 2005 Caravan%'

但问题是车型是一个整数,因此可以将“Caravan”与0,1,2进行比较。

我可以以某种方式将int转换为我比较的字符串吗?

2 个答案:

答案 0 :(得分:0)

在搜索之前,使用PHP str_replace()或preg_replace()函数预处理搜索字符串。如果您决定这样做,这将使您能够在将来以简单的方式支持多种语言。 理想情况下,您应该分离WHERE条件,以便数据库系统可以根据需要优化查询:

WHERE type=0 AND CONCAT(brand,modelyear) LIKE '%Adria 560 200[4-6]%'

答案 1 :(得分:0)

如果车辆类型的表名是vehicleType,则查询类似于以下内容:

SELECT * 
FROM vehicle v
INNER JOIN vehicleType vt on vt.vehicle_type_id = v.vehicle_type
WHERE concat_ws(v.brandName,v.modelYear,vt.vehicle_type) LIKE "%whatever%"