2011-11-14 65 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