Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Befehl zum Durchsuchen von CSV (oder einem ähnlichen Array)

Der richtige Weg, dies in SQL zu handhaben, besteht darin, eine weitere Tabelle für eine mehrwertige Eigenschaft hinzuzufügen. Es verstößt gegen das relationale Modell, mehrere diskrete Werte in einer einzigen Spalte zu speichern. Da es ein Nein-Nein sein soll, gibt es wenig Unterstützung dafür in der SQL-Sprache.

Die einzige Problemumgehung, um einen bestimmten Wert in einer durch Kommas getrennten Liste zu finden, besteht darin, reguläre Ausdrücke zu verwenden, die im Allgemeinen hässlich und langsam sind. Sie müssen mit Grenzfällen umgehen, wenn ein Wert am Anfang oder Ende der Zeichenfolge sowie neben einem Komma stehen kann oder nicht.

SELECT * FROM properties WHERE bedrooms RLIKE '[[:<:]]2[[:>:]]';

Es gibt andere Arten von Abfragen, die einfach sind, wenn Sie eine normalisierte Tabelle haben, aber schwierig mit der kommagetrennten Liste. Das Beispiel, das Sie angeben, nach einem Wert zu suchen, der gleich oder größer als die Suchkriterien ist, ist ein solcher Fall. Beachten Sie auch:

  • Wie lösche ich ein Element aus einer kommagetrennten Liste?
  • Wie stelle ich sicher, dass die Liste sortiert ist?
  • Wie hoch ist die durchschnittliche Zimmeranzahl?
  • Wie stelle ich sicher, dass die Werte in der Liste auch gültige Einträge sind? Z.B. was hindert mich daran "1,2,banane" einzugeben?

Wenn Sie keine zweite Tabelle erstellen möchten, finden Sie eine Möglichkeit, Ihre Daten mit einem einzigen Wert darzustellen.

Genauer gesagt empfehle ich Ihnen, Ihre Daten mit einem einzigen Wert pro Spalte darzustellen , und die Lösung von Mike Atlas erfüllt dies.