문제

나는 mile 마커로 정렬 된 선택한 고속도로의 검출기 데이터를 출력 해야하는 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'과 같은 다른 목록이 있습니다. 그들이 액세스 할 수있는 목록은 'I-64'로 나열됩니다.

4 가지 고속도로가 있으며, I-55/70을 제외한 모든 것에 대해 잘 작동합니다. 해당 옵션이 선택되면 목록은 위도 또는 경도에 의해 정렬되지 않고 대신 테이블에있는 순서만으로 정렬됩니다. I-55 / 70은 A / in이있는 유일한 사람입니다. 이것이 사물에 영향을 미칠까요?

미리 감사드립니다.

편집 : 이들은 목록 항목에 'I-55/70 WB'로, 위의 예와 같은 스타일로 나열되어 있습니다. 혼란에 대해 죄송합니다.

edit2 : 그건 트릭이되었습니다. 감사!

도움이 되었습니까?

해결책

"%eb%'등의 경우 @webname이 true로 평가해서는 안되기 때문에 절의 주문에 의한 주문은 어떤 경우에도 작동하지 않아야합니다. 사용하는 경우 사례 명령문은 동등성 비교를 수행하지만 와일드 카드 연산자 ( "%")는 유사하게 사용됩니다. 대신 시도해보십시오.

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?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top