我正在开发一种搜索功能,通过他们的地址(即邮政编码(zip)或姓名或城市)为我的项目搜索经销商。用户将只能输入一个html输入字段来输入搜索词(用户一次只能输入一个搜索词,即邮政编码或姓名或城市(不允许组合))。
开发查询的条件如下
有时,名称也可能包含邮政编码,在这种情况下,结果应该通过邮政编码缩短。
我试过这个
select city, postcode, name
from dealers
where name ='xyz'
OR postcode ='xyz'
OR city='XYZ'
ORDER BY postcode desc
但是Ii希望ORDER BY
适用于所有条件。例如,'xyz'匹配我想要按升序对结果进行排序的名字。
我该怎么做?任何建议都会受到很大关注
答案 0 :(得分:1)
试试这个:
SELECT
city, postcode, name
FROM
dealers
WHERE
...
ORDER BY
CASE WHEN @postcodeParam IS NOT NULL THEN postcode END DESC,
CASE WHEN @nameParam IS NOT NULL THEN name END,
CASE WHEN @citynameParam IS NOT NULL THEN cityname END