Angenommen, ich möchte die Reihenfolge der Datensätze nach einem Feld (Zeichenfolgendatentyp) namens STORY_LENGTH
ordnen. Dieses Feld ist ein mehrwertiges Feld und ich stelle die mehreren Werte mithilfe von Kommas dar. Zum Beispiel ist für record1 sein Wert "1" und record2 ist sein Wert "1,3" und für record3 ist sein Wert "1,2". Jetzt, wenn ich die Datensätze nach STORY_LENGTH
bestellen möchte, dann werden Datensätze wie folgt record1 > record3 > record2
bestellt. Es ist klar, dass STORY_LENGTH
Datentyp String ist und order by ASC
diesen Wert als String betrachtet. Aber, hier kommt das Problem. Zum Beispiel, wenn record4="10"
und record5="2"
und ich versuche zu bestellen sieht es wie record4 > record5
aus, was ich natürlich nicht will. Weil 2 > 10
und ich eine Zeichenfolge nur aufgrund mehrerer Werte des Feldes formatiert verwenden. Also, irgendjemand, können Sie mir dabei helfen? Ich brauche eine gute Idee, um es zu reparieren. dankeWie wird die String-Reihenfolge in der by-Klausel behandelt?
Antwort
Mehrwertige Felder, wie Sie beschreiben, bedeuten, dass Ihr Datenmodell defekt ist und normalized sein sollte.
Sobald dies erledigt ist, wird die Abfrage viel einfacher.
Das Feld enthält mehrere Werte desselben Typs. Zum Beispiel hat ein Lied zwei Längen: 10,15 oder Single wie 10. Derzeit in einer solchen Situation, dass db Design kann nicht geändert werden .. –
@ Masud Rahman - das ist bedauerlich. Möglicherweise möchten Sie eine Lösung mit dem Operator 'LIKE' suchen und die Zeichenfolge bearbeiten und filtern in der Anwendung statt in der DB. – Oded
Von dem, was ich verstanden habe, möchten Sie Elemente nach der zweiten oder ersten Zahl in kommagetrennten Werten in einem VARCHAR-Feld gespeichert werden. Die Umsetzung würde verwendeten Datenbank abhängig sind, beispielsweise in MySQL würde es wie folgt aussehen:
SELECT * FROM stories
ORDER BY CAST(COALESCE(SUBSTRING_INDEX(story_length, ',', -1), '0') AS INTEGER)
Und doch ist es im Allgemeinen nicht gut, nicht so zu verwenden, aus Leistungsgründen Sortierung als Scannen ganzer Tisch erfordern würde Sortierung anstelle der Verwendung von Index auf Feld.
Edit: Nach den Bearbeitungen sieht es so aus, als ob Sie nach dem ersten Wert sortieren und Werte nach dem Komma ignorieren möchten. Da laut einem Kommentar oben Änderungen im Datenbankdesign keine Option sind, verwenden Sie einfach folgenden Code zum Sortieren:
danke. Es sieht gut aus. Ich werde es versuchen und Feedback geben –
- 1. Wie wird ERR_INSECURE_RESPONSE behandelt?
- 2. Wie wird IOException behandelt?
- 3. Wie wird der Zeitunterschied für Ablaufdaten behandelt?
- 4. Wie wird die Authentifizierungstokenfolge in Grape API und token_and_options behandelt?
- 5. Wie wird die Variable in Javascripts beim Funktionsaufruf behandelt?
- 6. Wie wird Transaktionskonkurriere deklarativ behandelt?
- 7. Wie wird Gleitkommaüberlauf in iostreams behandelt
- 8. Wie wird der Speicher einer Klasse in C++ behandelt?
- 9. Wie wird der Fehler behandelt, wenn die ID nicht gefunden wird?
- 10. Wie behandelt man, wenn die Zeitzone in der Zukunft zurückgeht
- 11. Wie behandelt man `UIAlertController` richtig, wenn die Quellansicht geändert wird?
- 12. WSO2ESB Twilio-Anschluss: Wie wird der Paging-Vorgang behandelt?
- 13. Wie wird systemeigener Code von der JVM behandelt
- 14. Wie wird die Orientierungsänderung mithilfe von Fragment behandelt?
- 15. ExceptionContext.ExceptionHandled ändert sich in "true". Wo wird die Ausnahme behandelt?
- 16. Wie behandelt man die Deprecation in der Bibliothek?
- 17. Wie wird die Anzahl der Benachrichtigungen behandelt, wenn sich die App im Hintergrund im Firebase befindet?
- 18. Wie überprüft man, ob der SOAP-Fehler korrekt behandelt wird?
- 19. Wie behandelt man die `IllegalArgumentException` in RxJava?
- 20. Wie behandelt git die Ordnerberechtigung?
- 21. Wie behandelt man $ null in der Pipeline
- 22. Symfony2-Formular in modal wird nicht behandelt
- 23. Wie wird Klickereignis in Recyclerview in Android behandelt?
- 24. WPF RoutedEvents wird von ... behandelt?
- 25. Wie behandelt man unterschiedliche Länge der Sprache in der Webseite?
- 26. C# Ausnahme wird nicht behandelt
- 27. Definieren Sie die Struktur, die in Swift wie eine Klasse behandelt wird
- 28. Wie wird onchange-Ereignis bei Eingabetyp = Datei in jQuery behandelt?
- 29. In PHP wird 0 als leer behandelt?
- 30. Wie wird Unique-Constraint-Verletzung in SDN4 richtig behandelt?
Fixieren Sie Ihr Design. Einfach. – gbn