如何编写数据库查询以使用地址搜索客户

时间:2012-09-22 15:08:20

标签: sql oracle

  

可能重复:
  Database query to search using address

我正在开发一种搜索功能,通过他们的地址(即邮政编码(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'匹配我想要按升序对结果进行排序的名字。

我该怎么做?任何建议都会受到很大关注

1 个答案:

答案 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