Autor Zpráva
Misha
Profil *
Ahoj, trochu bojuji s tříděním adres v MySQL pomocí PSČ.

V poli adresa mám adresy ve formátu:
Adam Novák
Novodvorská 154/41
150 00  Praha 5
Česká republika

Někdy tam jméno chybí a někdy je tam místo jména upřesňující údaj adresy. Ale to není podstatné. Mi jde o třídění podle PSČ. Potřebuji aby se vypsaly všechny adresy, u kterých PSČ začíná číslem 7.

Mám to napsáno takhle:

SELECT * FROM `lide` WHERE (`lide`.`adresa` regexp '[[7][0-9]{2}[:space:][0-9]{2}]');

Ví někdo co tam mám špatně? Předem moc díky za pomoc.
juriad
Profil
SELECT * FROM `lide` WHERE `lide`.`adresa` regexp '7[0-9]{2}[:space:][0-9]{2}'
Máš tam hranaté závorky kolem celého regexu, které tam nepatří. Dále třída [7] je to samé jako 7.

Pozor na to, že regex je ukrutně pomalý. Silně doporučuji vytvořit nový sloupec, do kterého to PSČ budeš ukládat jako 5 charů, potom t bude fungovat LIKE '7%' a chytí se indexy.
Tomáš123
Profil
[:space:] zachytáva aj lomku?
lionel messi
Profil
Tomáš123:
[:space:] zachytáva aj lomku?

Nie, ale Misha nerieši vyhľadávanie podľa čísla ulice, ale PSČ. :-)

Mi jde o třídění podle PSČ.
Tomáš123
Profil
lionel messi:
Aha, nevšimol som si. Dik
Misha
Profil *
Vyhodil jsem závorky a stejně mi to nevypisuje nic. (v databázi je přes tisíc položek, které by tomu odpovídaly)


Nevím jestli není problém v tom space, ale jak to jinak řešit?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: