none
Alias a resultado de Query, no a la columna RRS feed

  • Pregunta

  • Quiero ponerle alias a las filas o resultado de mi consulta, le pongo un ejemplo de lo que busco hacer

    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

    Con ese query obtengo todos los nombres de las tablas de mi base de datos, pero los nombres de mis tablas son por ejemplo tblUsuarios, tblEntradas, tblSalidas.

    el resultado de esto es una columna llamda TABLE_NAME con sus filas tblUsuarios, tblEntradas, tblSalidas, lo que busco es ponerle un alias a esas filas por ejempo a tblUsuarios le quiero poner de alias Usuarios, a tblEntrada quiero ponerle Registro de entradas, como puedo hacer esto en sql server?

    Yo se que puedo hacer SELECT TABLE_NAME AS [NOMBRE TABLAS] FROM INFORMATION_SCHEMA.TABLES pero esto solo le pone alias al encabezado de la columna y no es lo que busco, espero puedan ayudarme....

    Saludos.

    jueves, 4 de enero de 2018 17:58

Respuestas

  • La instrucción CREATE TABLE no ofrece propiedad alguna que nos permita agregar descripción respecto al objeto que se crea -que bien podría contener un alias de tabla para tus propósitos- sin embargo podrías agregar propiedades extendidas al objeto mediante el procedimiento de sistema sp_addextendedproperty, por ejemplo:

    -- Create table
    CREATE TABLE tblSupplier
    (
        idSupplier int PRIMARY KEY,
        name varchar(100)
    );
    
    -- Add extended property
    EXEC sys.sp_addextendedproperty   
        @name = N'MS_DescriptiontblSupplier',   
        @value = N'Proveedores', -- Add table alias 
        @level0type = N'SCHEMA', @level0name = 'dbo',  
        @level1type = N'TABLE',  @level1name = 'tblSupplier';  
    GO  
    
    -- List extended property
    SELECT objtype, objname, name, value  
    FROM fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', default, NULL, NULL);  
    GO  


    jueves, 4 de enero de 2018 18:20
  • Usa una expresion CASE para asignar dichos valores.

    select
        table_name,
       case table_name
       when 'tblUsuarios' then 'Usuarios'
       ...
       else 'whatever'
       end as table_alias
    from
        ...


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    • Marcado como respuesta MannyDevs jueves, 4 de enero de 2018 19:23
    jueves, 4 de enero de 2018 18:10

Todas las respuestas

  • Usa una expresion CASE para asignar dichos valores.

    select
        table_name,
       case table_name
       when 'tblUsuarios' then 'Usuarios'
       ...
       else 'whatever'
       end as table_alias
    from
        ...


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    • Marcado como respuesta MannyDevs jueves, 4 de enero de 2018 19:23
    jueves, 4 de enero de 2018 18:10
  • La instrucción CREATE TABLE no ofrece propiedad alguna que nos permita agregar descripción respecto al objeto que se crea -que bien podría contener un alias de tabla para tus propósitos- sin embargo podrías agregar propiedades extendidas al objeto mediante el procedimiento de sistema sp_addextendedproperty, por ejemplo:

    -- Create table
    CREATE TABLE tblSupplier
    (
        idSupplier int PRIMARY KEY,
        name varchar(100)
    );
    
    -- Add extended property
    EXEC sys.sp_addextendedproperty   
        @name = N'MS_DescriptiontblSupplier',   
        @value = N'Proveedores', -- Add table alias 
        @level0type = N'SCHEMA', @level0name = 'dbo',  
        @level1type = N'TABLE',  @level1name = 'tblSupplier';  
    GO  
    
    -- List extended property
    SELECT objtype, objname, name, value  
    FROM fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', default, NULL, NULL);  
    GO  


    jueves, 4 de enero de 2018 18:20
  • Gracias Hunchback, lo adapte a mis necesidades y ya quedo como esperaba.

    Saludos y que sigas colaborando.

    jueves, 4 de enero de 2018 19:42
  • Puedes hacer lo q te dicen en la otra respuesta pero es tedioso y laborioso, por lo q es mejor reemplazar el valor del tablename por un substri g de la posición 3 al la longitud del valor.

     SELECT Substring(TABLE_NAME,3,len( TABLE_NAME)-3) From INFORMATION_SCHEMA.TABLES

    Q quitará el prefijo Tbl del nombre de la tabla.


    • Propuesto como respuesta vyrcyrus_ jueves, 4 de enero de 2018 20:37
    • Editado vyrcyrus_ jueves, 4 de enero de 2018 20:38
    jueves, 4 de enero de 2018 20:36
  • Puedes hacer lo q te dicen en la otra respuesta pero es tedioso y laborioso, por lo q es mejor reemplazar el valor del tablename por un substri g de la posición 3 al la longitud del valor.

     SELECT Substring(TABLE_NAME,3,len( TABLE_NAME)-3) From INFORMATION_SCHEMA.TABLES

    Q quitará el prefijo Tbl del nombre de la tabla.


    Si bien en cierto lo que dices, pero lo que busco es que yo pueda ponerle el alias que quiera al nombre de la table y no solo quitarle algunos caracteres al nombre, ya que si bien los nombres de las tablas pueden variar dependiendo del programador como las quiera llamar, algunas pueden iniciar tbl de table o tener un guion bajo (_) etc...para mi es major ponerle un nombre distinto y usar ese alias para que el usuario pude saber exactamente que tables es, sin necesidad de mostrarle exactamente el nombre de la tabla, sin embarquo tambien tu sugerencia es una opcion, todo depende para que lo quiere uno utilizar.

    Saludos y no dejen de colaborar.

    jueves, 4 de enero de 2018 22:15