我有Vehicle_parts如下表,
Vehicle_Sub_Part_Number 11111年yyy11111年yyy44444年yyy
您可以在WHERE
子句中放置多个LIKE
条件,以检查您指定的每个条件。根据您的描述,这个查询将工作:
SELECT vehicle_id, vehicle_major_part_number, vehicle_sub_part_number
FROM vehicle_parts
WHERE vehicle_major_part_number LIKE '11111%'
OR vehicle_major_part_number LIKE '88888%'
OR vehicle_sub_part_number LIKE '11111%'
OR vehicle_sub_part_number LIKE '88888%';
使用LIKE
的查询,特别是使用%(标记后面可能会出现的字符)的查询通常很慢,正如你所看到的,它们也可能很长,而且不好读。您还可以尝试这样做:
SELECT vehicle_id, vehicle_major_part_number, vehicle_sub_part_number
FROM vehicle_parts
WHERE CONCAT(vehicle_major_part_number, vehicle_sub_part_number) LIKE '%11111%' OR
CONCAT(vehicle_major_part_number, vehicle_sub_part_number) LIKE '%88888%';
这可能更好读,但仍然很慢。
如果你确实知道你想要检查哪个字符串,这将使你的查询更短,更容易阅读,并将改善执行时间。为例:
SELECT vehicle_id, vehicle_major_part_number, vehicle_sub_part_number
FROM vehicle_parts
WHERE '11111 xxx' IN (vehicle_major_part_number, vehicle_sub_part_number)
OR '88888 zzz' IN (vehicle_major_part_number, vehicle_sub_part_number);
这当然会比其他选项少两行,但也许您会找到一种方法来防止使用LIKE
。这样会好很多。
这里有一个小提琴根据你的例子:db<>fiddle