MySQL REGEX Hilfe

Moin zusammen.

Ich brauch mal Hilfe beim Zusammensetzen eines MySQL Select Statements.

Ich habe eine sehr große Adressdatenbank, wo ich anhand von PLZ, Straße, Hausnummer nach Adressen filtere. Jetzt habe ich da ein Problem. Ich schaffe es nicht, in den Hausnummern auch Hausnummern a la 8a oder 45b zu finden.

Statement vereinfacht:
Code:
Select * from adressen where PLZ like $plz and STRASSE like $strasse and HNR like $hnr

Ich habe es schon versucht mit HNR like $hnr%, aber das geht natürlich in die Hose, weil er bei Eingabe von HNR 4 zwar dann auch 4b findet aber eben auch 45 usw. Geht also nicht.

Jetzt suche ich nach einem REGEX Ausdruck, der mein Problem löst. Ich habe schon google bemüht, aber noch nicht das Richtige gefunden. Vielleicht kann einer von euch mir auf den rechten Weg helfen?
 
Moin,

1. Sollte man sowas sowieso nicht machen:
Code:
Select * from ...
Das schluckt performance.

2. probiers mal so:
PHP:
mysql_query('SELECT * FROM adressen WHERE PLZ = \'' . $plz . '\' and STRASSE = \'' . $strasse . '\' and HNR like \'' . $hnr . '%\'')

Hoffe ich hab mich nicht irgendwo vertippt ...

ghost
 
Und wie hilft mir das jetzt weiter? Ich habe extra über das Statement geschrieben, dass es vereinfacht ist.

Mir geht es darum, in der Variable $hnr steht z.B. "4" drin. Jetzt möchte ich alle Hausnummern bekommen, a la "4" "4a" "4b" usw. aber eben nicht "40" "41" "42".

Mit Performance und Statements selber habe ich keine Probleme, dass passt alles.
 
Achso. Welche MySQL Version denn?

Wegen Performance: Dass du keine Probleme damit ist hast ist ok, aber je schneller, desto besser, oder? =)
 
Danke, aber so findet er nur Einträge die einen Buchstaben haben. Ich habe es aber selbst gelöst, weil es wichtig war.

Wieder stark vereinfacht:
Code:
Select * from adressen where PLZ like $plz and STRASSE like $strasse and (HNR like $hnr or HNR REGEXP $hnr[a-zA-Z])
 
Code:
SELECT *
FROM adressen
WHERE plz LIKE $plz
AND strasse LIKE $strasse
AND hnr REGEXP '$hnr[a-zA-Z]?'
 
Zurück
Oben