0

我正在开发一个 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

WebName 视图具有不同的列表,例如“I-64 WB at MP 3.1”。他们有权访问的 ListItems 被列为“I-64”。

有 4 条不同的州际公路,除了一个 I-55/70 外,它对所有地方都适用。选择该选项后,列表不会按纬度或经度排序,而是仅按它们在表中的顺序排序。I-55/70 是唯一一个带有 / 的。这会影响事情吗?

先感谢您。

编辑:这些在列表项中列为“I-55/70 WB”,依此类推,样式与上例相同。很抱歉造成混乱。

Edit2:这成功了。谢谢!

4

2 回答 2

3

I-55/70不对应'%EB%,'%WB%'或.'%NB%''%SB%'

你的ORDER BY条款总是NULL在那种情况下。

WebName当is时,您要对哪个字段进行排序I-55/70

于 2009-02-09T16:09:44.657 回答
1

在我看来,您的 ORDER BY 子句在任何情况下都不应该起作用,因为“CASE @WebName WHEN '%EB%'”等不应评估为真。您使用的 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

斜线不应该影响任何东西。

于 2009-02-09T16:21:49.607 回答