none
telefono RRS feed

  • 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-23

    Pero cuando lo ingrese solo pueda escribirlo todo de corrido

    Desde ya muchas gracias por el apoyo.


    miércoles, 8 de noviembre de 2017 15:17

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;

    jueves, 9 de noviembre de 2017 17:24

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. 

    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:

    miércoles, 8 de noviembre de 2017 15:29
  • Hola que tal me ayuda bastante con la informcion que me a brindado asi e podido entender unas cosas mas pero, nose si me podrias guiar de como hacerlo ya que soy nuevo en esto.
    miércoles, 8 de noviembre de 2017 19:17
  • 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:

    miércoles, 8 de noviembre de 2017 19:36
  • la ayuda que necesito es el sql server ya que es un trabajo de la universidad que nos pide creer la base de datos con ese formato en el mismo sql server
    miércoles, 8 de noviembre de 2017 19:39
  • 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:

    miércoles, 8 de noviembre de 2017 19:43
  • en si me estan pidiendo que al momento de almacenar a la base de datos me registre con esa especificaciòn

    miércoles, 8 de noviembre de 2017 23:15
  • 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:

    jueves, 9 de noviembre de 2017 8:37
  • 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;

    jueves, 9 de noviembre de 2017 17:24