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
والرأي WebName لديها قوائم مختلفة مثل "I-64 WB في MP 3.1. وListItems حصولهم على مذكورة تماما كما "I-64".
وهناك 4 الطرق السريعة مختلفة، وانها تعمل بشكل جيد في كل شيء ولكن واحدة، I-55/70. عند اختيار هذا الخيار، لا يتم فرز القائمة حسب خطوط الطول أو العرض، ولكن بدلا من ذلك فقط من خلال الترتيب الذي كنت في الجدول. I-55/70 هو واحد فقط مع / في ذلك. هذا من شأنه أن يؤثر على الأشياء؟
وشكرا لكم مقدما.
وتحرير: يتم سرد هذه في عنصر القائمة باسم 'I-55/70 WB "وهلم جرا في نفس النمط كما في المثال أعلاه. عذرا عن الخلط.
وEdit2: هذا فعل الحيلة. شكرا!
المحلول
ويبدو لي ORDER BY الخاص شرط أن لا تعمل في أي من الحالات بسبب "قضيةWebName عندما '٪ EB٪'" يجب وما لا تقييم إلى 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
؟