(mysql) Suche innerhalb einer Textfeldzeile
miltonF
- datenbank
0 Vinzenz Mai0 MiltonF
Hallo allerseits
Ich habe in meiner DB in einem Textfeld die Koordinaten eines Polygons gespeichert. Pro Zeile ein Koordinatenpaar, das mit Komma getrennt ist:
1.2445,15.2211
2.4451,45.1121
1.2149,39.9906
1.0121,12.6573
Nun möchte ich nach den Datensätzen suchen, die einen Polygon-Eckpunkt in der Nähe eines bereits bestehenden haben.
Das mache ich mit " WHERE Koord LIKE '%1.2%,15.2%' "
Das funktioniert auch teilweise, doch kommen da auch Datensätze rein, wo diese Koordinaten nicht auf der gleichen Zeile sind.
Wie kann ich mysql dazu bringen, jeweils nur auf einer Zeile zu suchen?
Kann man in mysql sowas implementieren?
Vielen Dank für eure Hilfe
Milton
Hallo,
Ich habe in meiner DB in einem Textfeld die Koordinaten eines Polygons gespeichert. Pro Zeile ein Koordinatenpaar, das mit Komma getrennt ist:
1.2445,15.2211
2.4451,45.1121
1.2149,39.9906
1.0121,12.6573
das ist gar keine gute Idee. Speichere jede Koordinate in einer eigenen Spalte, verwende dafür einen geeigneten Datentyp, z.B. DECIMAL. Daten sollten atomar vorliegen, siehe Wikipedia, erste Normalform.
Nun möchte ich nach den Datensätzen suchen, die einen Polygon-Eckpunkt in der Nähe eines bereits bestehenden haben.
Das mache ich mit " WHERE Koord LIKE '%1.2%,15.2%' "
und nimm als Bedingung einen einfachen Pythagoras, wobei auch dieser aufwendig ist.
Bei Deinem derzeitigen kaputten Tabellendesign kannst Du mit Zeichenkettenfunktionen am Komma trennen, in Zahlen umwandeln und die gleiche Berechnung durchführen. LIKE halte ich für ungeeignet, es sei denn Du verknüpfst mehrere LIKE-Bedingungen mit OR.
Freundliche Grüße
Vinzenz
Danke erstmal für den Tipp. Normalerweise halte ich mich durchaus an die eleganten Normalformen, doch in diesem Fall muss ich eine Ausnahme machen. Die "Koordinaten" können nämlich durchaus auch Worte sein. Ist ein komisches Fun-Feld, zugegeben.
Mein Problem liesse sich, glaube ich, am einfachsten mit Regulären Ausdrücken lösen, doch habe ich im Zusammenhang mit mysql absolut keine und auch sonst kaum Erfahrung damit.
Meine Frage nochmals formuliert
Wie kann ich einen Datensatz suchen, der in einer einzigen Zeile eines mehrzeiligen Textfeldes ein bestimmtes Muster enthält?
Danke, Milton
Hallo
Wie kann ich einen Datensatz suchen, der in einer einzigen Zeile eines mehrzeiligen Textfeldes ein bestimmtes Muster enthält?
MySQL-Handbuch, Zeichenkettenfunktionen, REGEXP().
Meiner Meinung nach besteht Dein Problem jedoch in der Speicherung der Koordinaten und Deiner Definition von "in der Nähe von".
Freundliche Grüße
Vinzenz