誤っ一種類のみをソートすることによって秩序 - ASP.NETでSQL
-
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
WebNameビューには、このような 'MP 3.1でI-64 WB' などさまざまなリストを持っています。 彼らはへのアクセス権を持っているのListItemは、単に「I-64」と記載されています。
があり、4つの異なる州間高速道路だし、それは、I-70分の55 1以外のすべてのために正常に動作しています。そのオプションを選択すると、リストは緯度や経度によって並べ替えられ、代わりにちょうど彼らがテーブルにいるという順序によるものです。 I-55/70は、その中に/を持つ唯一のものです。これは、物事に影響を与えますか?
事前にありがとうございます。
編集:これらは、「I-70分の55 WB」としてリスト項目に記載されているというように、上記の例と同じスタイルでされています。混乱については申し訳ありません。
EDIT2:トリックをしました。ありがとう!
解決
これは、「『%EBの%』 WHEN CASEの@WebName」などがtrueと評価べきではありませんので、いずれのケースでは動作しないはずですORDER BY句は、私には思えます。 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
ときにソートしたいのですか?