2

可能重复:
使用地址搜索的数据库查询

我正在开发一种搜索功能,通过他们的地址(即按邮政编码(zip)或按名称或按城市)为我的项目搜索经销商。将只为用户提供一个 html 输入字段来输入搜索词(用户一次只能输入一个搜索词,即邮政编码或姓名或城市(不允许组合))。

开发查询的条件如下

  • 当用户按邮政编码搜索时,匹配的结果应按降序显示
  • 当用户按名称搜索时,匹配结果应按字母顺序显示与城市名称相同

有时,名称也可能包含邮政编码,在这种情况下,结果应该用邮政编码缩短。

我试过这样

select city, postcode, name 
from dealers 
where name ='xyz' 
 OR postcode ='xyz' 
 OR city='XYZ' 
ORDER BY postcode desc

但我想要ORDER BY每一个条件。例如 'xyz' 匹配名字我想按升序对结果进行排序。

我怎样才能做到这一点?任何建议将不胜感激

4

1 回答 1

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
于 2012-09-22T15:16:12.460 回答