Non so se esista qualche particolare convenzione per prefissi/numeri telefonici e magari il mio dubbio non può verificarsi ma
Questa query:
codice:
SELECT * FROM `prefissi` WHERE MID('070123456', 1, CHARACTER_LENGTH(`Prefisso`))=`Prefisso`
nel caso ci siano due prefissi 070 e 0701 li restituirebbe entrambi.
Accoderei alla query un ordinamento decrescente
codice:
SELECT * FROM `prefissi` WHERE MID('070123456', 1, CHARACTER_LENGTH(`Prefisso`))=`Prefisso` order by char_length(prefisso) desc limit 1
per "matchare" la stringa più lunga.