2011-11-14 108 views
1

我想通過郵政編碼排序,如果用戶鍵入:L25排序郵編根據用戶輸入

結果可能是這個樣子:

  • L12
  • L24
  • L25
  • L21
  • L22
  • L25

我希望用戶輸入'L25'出現在頂部,然後排序其餘部分?

例子:

  • L25
  • L25
  • L12
  • L21
  • L22
  • L24

那是可以通過SQL查詢?

+0

爲什麼它在一個SQL查詢?你只是在爲自己而努力。在您的應用程序邏輯中進行。 –

回答

5
select MyColumn 
from MyTable 
order by case when MyColumn = 'L25' then 0 else 1 end, 
    MyColumn 
+0

+1因爲被創造性 – xQbert

+0

恐怕這不會起作用,因爲SQL會嘗試將字符串'L25'轉換爲int,這會導致錯誤。然而,我使用SQL服務器,而不是MySQL,所以也許我不知道有一些區別... – Helena

+0

@ Helena,不 - 它比較L25與MyColumn,這是一個字符串,而不是一個Int。 (英國郵政編碼是字符 - 例如L25 1AA - 不是像美國郵政編碼這樣純粹的數字編碼。) –

1

我想這應該做的工作:

SELECT * 
FROM yourTable 
ORDER BY 
    CASE WHEN postcode LIKE @userinput THEN '' 
    ELSE postcode END