0

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

我要在数据库中比较的字段是:* 品牌名称(字符串)* 型号年份(字符串)* 车辆类型(整数)

车辆类型为 0、1 或 2。即(大篷车、移动房车、拖车)

所以用户可能会搜索:“Adria 560 2005 Caravan”

我的第一个想法是做一个 CONCAT LIKE 比较。WHERE CONCAT(brand,modelyear,type) LIKE '%Adria 560 2005 Caravan%'

但问题是车辆类型是整数,因此它将“大篷车”与 0、1、2 进行比较。

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

4

2 回答 2

0

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

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

等等

于 2012-06-15T11:12:30.253 回答
0

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

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%"
于 2012-06-15T11:14:11.007 回答