SQL in ASP.NET - Sortierung nach nur einer Art falsch Sortierung
-
22-08-2019 - |
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!
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?