ASP.NET의 SQL- 하나의 유형 만 잘못 정렬하여 주문
-
22-08-2019 - |
문제
나는 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
?