Hi.
Am Freitag, 7. Januar 2005 20:33 schrieb Daniel Penning:
Ich hätte da eine einfache und eine performante Lösung anzubieten.
1. die einfache:
SELECT * FROM vorwahl
WHERE 493012345678 LIKE CONCAT(prefix,'%')
ORDER BY prefix DESC
LIMIT 1
Bei der Query kann leider kein Index verwendet werden. Für große
Datenmengen wäre das nicht zu empfehlen.
Wenn man ein
AND prefix LIKE CONCAT(LEFT('493012345678', 2), '%')
in die Where-clause einfügt, greift auch wieder ein Index auf prefix.
Wenn der kleinste prefix mehr als 2 Stellen hat, dann diese Anzahl bei LEFT
verwenden.
Bei mir ist prefix dann vom Typ char, wenn er unbedingt int o.ä. sein muss,
muss u.U. mit LEFT('493012345678', 2)*1 ein Typecast gemacht werden.
Ciao, René
----------------------------------------------------------------------