¿Cuál es una buena estructura de datos para almacenar números de teléfono en los campos de la base de datos? Estoy buscando algo que sea lo suficientemente flexible para manejar números internacionales, y también algo que permita consultar las distintas partes del número de manera eficiente.
Editar: Solo para aclarar el caso de uso aquí: actualmente almaceno números en un solo campo varchar, y los dejo tal como los ingresó el cliente. Luego, cuando el código necesita el número, lo normalizo. El problema es que si quiero consultar unos pocos millones de filas para encontrar números de teléfono coincidentes, implica una función, como
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
que es terriblemente ineficaz. Además, las consultas que buscan cosas como el código de área se vuelven extremadamente complicadas cuando se trata de un solo campo varchar.
[Editar]
La gente ha hecho muchas buenas sugerencias aquí, ¡gracias! Como actualización, esto es lo que estoy haciendo ahora: todavía almaceno números exactamente como se ingresaron, en un campo varchar, pero en lugar de normalizar las cosas en el momento de la consulta, tengo un disparador que hace todo ese trabajo cuando se insertan los registros o actualizado. Así que tengo ints o bigints para las partes que necesito consultar, y esos campos están indexados para que las consultas se ejecuten más rápido.