Principales respuestas
telefono

Pregunta
-
Hola a todos, me podrían ayudar a que tipo de dato le pondria al campo "Telefono" de mi tabla Cliente donde me permita almacenar los números telefónicos de la siguiente manera:
Teléfono
123-12-23Pero cuando lo ingrese solo pueda escribirlo todo de corrido
Desde ya muchas gracias por el apoyo.
- Editado Oscar Azabache miércoles, 8 de noviembre de 2017 15:24
Respuestas
-
Tu aplicación debe ser la encargada de dar tratamiento al valor según la forma que esperas sea almacenado, no la base de datos. Para lo que sea necesario, puedes escribir un trigger que de el formato que esperas, por ejemplo:
CREATE TRIGGER dbo.TriggerName ON dbo.Cliente AFTER INSERT, UPDATE AS BEGIN UPDATE c SET c.Telefono = FORMAT(CONVERT(int, i.Telefono), '###-##-##') /*SQL Server 2012 o posterior*/ -- c.Telefono = STUFF(STUFF(i.Telefono, 4, 0, '-'), 7, 0, '-') /*Anterior a SQL Server 2012*/ FROM inserted i INNER JOIN Clientes c ON i.idCliente = c.idCliente; END GO
Se espera que para registrar y editar el número de teléfono no se debe de considerar el signo de guión medio (-) la consulta de selección deberá omitir dicho carácter, por ejemplo:
SELECT REPLACE(Telefono, '-', '') FROM Cliente WHERE idCliente = @idCliente;
- Propuesto como respuesta Jorge TurradoMVP jueves, 9 de noviembre de 2017 18:19
- Marcado como respuesta Juan MondragónModerator martes, 14 de noviembre de 2017 17:00
Todas las respuestas
-
Buenas,
Para almacenarlos en formato telefónico no hay nada como tal (hasta donde yo se).
Ahora, se me ocurren dos opciones, almacenarlo como un entero y extraerlo con formato
SQL SERVER 2012- How to format phone numbers
Otra opción que se me ocurre es almacenarlo como Varchar y validar el contenido mediante los trigger de beforeInsert y beforeUpdate, de modo que lances un error si no cumplen con tu validación.
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Propuesto como respuesta Juan MondragónModerator miércoles, 8 de noviembre de 2017 17:24
-
-
Buenas,
No soy muy experto en SQL Server, pero intentare hacerlo, cual de las dos opciones es la que quieres intentar?
Necesitas ayuda en la parte de SQL Server o en la parte de la aplicación. Si es en la aplicación, que lenguaje utilizas c# o VB.Net?
Comentanos un poco las dudas concretas que tienes para ayudarte lo mejor posible
Quedo a la espera de tu respuesta
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
-
-
vale, SQL Server exclusivamente, ahora, que opcion es la que más te interesa? almacenar el numero como un integer y recuperarlo con el cambio de formato? o el tema de los triggers?
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
-
-
Vale,
Entonces tendras que hacer que el campo sea VarChar y validarlo.
Que version de SQL Server usas?
atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
-
Tu aplicación debe ser la encargada de dar tratamiento al valor según la forma que esperas sea almacenado, no la base de datos. Para lo que sea necesario, puedes escribir un trigger que de el formato que esperas, por ejemplo:
CREATE TRIGGER dbo.TriggerName ON dbo.Cliente AFTER INSERT, UPDATE AS BEGIN UPDATE c SET c.Telefono = FORMAT(CONVERT(int, i.Telefono), '###-##-##') /*SQL Server 2012 o posterior*/ -- c.Telefono = STUFF(STUFF(i.Telefono, 4, 0, '-'), 7, 0, '-') /*Anterior a SQL Server 2012*/ FROM inserted i INNER JOIN Clientes c ON i.idCliente = c.idCliente; END GO
Se espera que para registrar y editar el número de teléfono no se debe de considerar el signo de guión medio (-) la consulta de selección deberá omitir dicho carácter, por ejemplo:
SELECT REPLACE(Telefono, '-', '') FROM Cliente WHERE idCliente = @idCliente;
- Propuesto como respuesta Jorge TurradoMVP jueves, 9 de noviembre de 2017 18:19
- Marcado como respuesta Juan MondragónModerator martes, 14 de noviembre de 2017 17:00