SQL في ASP.NET - طلب عن طريق فرز نوع واحد فقط غير صحيح

StackOverflow https://stackoverflow.com/questions/528767

سؤال

وأنا أعمل على تطبيق 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؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top