Frage

Ich arbeite an einer ASP.NET-Anwendung, die zur Ausgabe von Detektordaten für einen ausgewählten Interstate soll, von Meile Markierung sortiert. Wir stellen fest, den besten Weg, dies zu tun, wäre es durch Länge (West und Ost) oder Breite (Nord und Süd) wird Sortierung je nachdem, welche Richtung es ging. Hier ist die Abfrage, die es auffüllt.

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

Die WebName Ansicht hat verschiedene Inserate wie 'I-64 WB bei MP 3.1'. Das Listitem sie Zugriff haben aufgelistet nur als ‚I-64‘.

Da ist 4 verschiedene Autobahnen, und es funktioniert gut für alles, aber eine, I-55/70. Wenn diese Option gewählt wird, wird die Liste nicht durch die Breite oder Länge sortiert, sondern nur durch die Reihenfolge, dass sie in der Tabelle sind. I-55/70 ist das einzige mit einem / in ihm. Würden diese Dinge beeinflussen?

Vielen Dank im Voraus.

Edit: Diese werden in der Liste Artikel als ‚I-55/70 WB‘ aufgeführt und so weiter im gleichen Stil wie das Beispiel oben. Sorry über die Verwirrung.

Edit2: Das den Trick. Dank!

War es hilfreich?

Lösung

Es scheint mir Ihre ORDER BY-Klausel sollte nicht in jedem Fall arbeiten, weil „CASE @WebName WHEN‚% EB%‘“ usw. nicht auf true bewerten sollte. Die Case-Anweisung, wie Sie verwenden, es hat einen Äquivalenzvergleich aber die Wildcard-Operatoren ( „%“) sind nur für LIKE verwendet. Versuchen Sie stattdessen:

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

Der Schrägstrich soll nichts beeinflussen.

Andere Tipps

I-55/70 entspricht weder von '%EB%, '%WB%', '%NB%' oder '%SB%'.

Ihre ORDER BY Klausel ist in diesem Fall immer NULL.

Welches Feld wollen Sie auf sortieren, wenn die WebName I-55/70 ist?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top