SQL在ASP.NET - 顺序按正确排序只有一种类型
-
22-08-2019 - |
题
我正在这是应该输出检测器数据要选择的州际,通过英里标记排序ASP.NET应用程序。我们(南,北),取决于它去哪个方向决心做这将通过经度(西部和东部)或纬度进行排序的最佳方式。下面是填充它的查询。
SELECT [ShortWebID], [AvgSpeed], [update_time], [WebName] FROM [vwAverageSpeed]
WHERE (([WebName] LIKE '%' + @WebName + '%') AND ([update_time] > @update_time))
ORDER BY CASE @WebName WHEN '%EB%'THEN [Longitude] WHEN '%WB%' THEN [Longitude] WHEN '%NB%' THEN [Latitude] WHEN '%SB%' THEN [Latitude] END
在网站名称视图具有不同列表,如 'I-64在WB MP 3.1'。 他们可以访问列出正如“I-64”。
的时listItems有4条不同的州际公路,它的做工精细的一切,但一个,我-55/70上。当选择该选项时,列表不会被经纬度来分类,而只是由以便他们在表中。 I-55/70是唯一一个与它/。这会影响到东西?
感谢您提前。
编辑:这些列表中的项目被列为“I-七十零分之五十五WB”等在相同的风格作为上面的例子。遗憾的混乱。
EDIT2:这确实起作用。谢谢!
解决方案
在我看来,你的ORDER BY子句不应该在任何情况下工作,因为“CASE @WebName如果‘%EB%’”等不应计算为true。当你正在使用它等价的比较,但通配符运算符(“%”)case语句仅用于LIKE。尝试这个代替:
ORDER BY CASE
WHEN @WebName LIKE '%EB%' THEN [Longitude]
WHEN @WebName LIKE '%WB%' THEN [Longitude]
WHEN @WebName LIKE '%NB%' THEN [Latitude]
WHEN @WebName LIKE '%SB%' THEN [Latitude]
END
在斜线不应该影响任何东西。
其他提示
I-55/70
对应于既非'%EB%
,'%WB%'
,'%NB%'
或'%SB%'
的。
您ORDER BY
子句总是NULL
在这种情况下。
要排序的时候WebName
是I-55/70
什么领域呢?
不隶属于 StackOverflow