2012-09-22 76 views
2

可能重複搜索的客戶:
Database query to search using address如何編寫數據庫查詢使用地址

我開發一個搜索功能,通過它們的地址尋找經銷商(IE瀏覽郵編(郵編)或按名稱或城市)爲我的項目。用戶將只被提供一個html輸入字段來輸入搜索詞(用戶一次只能輸入一個搜索詞,即郵政編碼或名稱或城市(不允許組合))。

開發一個查詢中的條件如下

  • 當由郵編用戶的搜索,匹配的結果應顯示降序
  • 當通過名稱匹配的結果用戶的搜索應該是顯示按字母順序相同城市名稱

有些時候,名稱還可能包含郵政編碼,在這種情況下,結果應該用郵政編碼縮短。

我試過這樣

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

但㈡想ORDER BY每一個條件。例如'xyz'匹配我想要按升序對結果進行排序的名字。

我該怎麼做?任何建議將大大appriciated

+0

更多。同一用戶提出同樣的問題。 @ user964147,請移動此問題所具有的任何信息,即上一個問題沒有使用編輯功能回到上一個問題。 –

回答

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 
+0

非常感謝您的回覆,您的建議使我能夠在我的任務中思考問題。 – user964147

+1

這不是Oracle語法,這是一個小問題。更重要的一點是,應用程序只有「一個HTML輸入字段」,因此只有一個參數將傳遞給查詢。 – APC

+0

@APC,對不起。我試圖刪除它,但它告訴我,我無法刪除接受的答案。我不熟悉oracle語法,但我知道它有'CASE'表達式,所以我用這種方式編寫它,對於三個參數,我注意到他比較了參數的名稱,郵編和cityname,所以我認爲有三個不同的參數傳遞給查詢,所以我這樣寫。但是我認爲'ORDER BY'子句是他正在尋找的東西,我沒有意識到它是重複的,所以我發佈了它。但隨意編輯答案或標誌將其刪除。 –

相關問題