none
En los comandos de SQL Server veo que se puede usar indistintamente [Objeto] u 'Objeto'... RRS feed

Respuestas

  • Hola James2016-2:

    No la hay. Al menos que yo sepa, pero.

    Lo primero es que esos caracteres son delimitadores.

    Pero por ejemplo las comillas dobles se pueden usar también como literales, en función de las reglas ISO.

    set QUOTED_IDENTIFIER ON
    select TOP(1)
    p.Color as [DEFINICIÓN DE COLOR], "TIPO" AS [MODELO]
    from SalesLT.Product as P
    GO
    SET QUOTED_IDENTIFIER OFF
    SELECT TOP(1)
    P.COLOR AS [DEFINICIÓN DE COLOR], 'TIPO' AS MODELO
    FROM SalesLT.Product AS P
    

    Como observas, ante la misma consulta, el resultado es bien diferente.

    Además cuando programes en tu lenguaje cliente, si te acostumbras a utilizar ", tendrás que utilizar secuencias escape, para que los strings no se vean partidos, y rompe un poco la legibilidad del código.

    Yo te recomiendo que utilices []

    • Marcado como respuesta James2016-2 domingo, 19 de mayo de 2019 6:08
    domingo, 19 de mayo de 2019 5:10
  • Una observación más: Los delimitadores solo son obligatorios cuando en el nombre del objeto existe algún carácter "especial" que hace que el nombre no se reconozca como identificador. Por ejemplo, puedes poner:

    Select * from MiTabla -- Nótese que MiTabla no lleva delimitadores

    Pero en estos casos se requieren:

    Select * from [Mi Tabla] -- Se necesitan delimitadores debido al espacio en blanco

    Select * from [Mi-Tabla] -- Se necesitan delimitadores debido al guión

    Select * from [2Mitabla] -- Se necesitan delimitadores debido a que comienza con un número

    En los tres casos se puede poner comillas en lugar de los corchetes a condición de que antes hayas activado los "quoted identifiers".

    • Marcado como respuesta James2016-2 domingo, 19 de mayo de 2019 17:57
    domingo, 19 de mayo de 2019 16:33

Todas las respuestas

  • Hola James2016-2:

    No la hay. Al menos que yo sepa, pero.

    Lo primero es que esos caracteres son delimitadores.

    Pero por ejemplo las comillas dobles se pueden usar también como literales, en función de las reglas ISO.

    set QUOTED_IDENTIFIER ON
    select TOP(1)
    p.Color as [DEFINICIÓN DE COLOR], "TIPO" AS [MODELO]
    from SalesLT.Product as P
    GO
    SET QUOTED_IDENTIFIER OFF
    SELECT TOP(1)
    P.COLOR AS [DEFINICIÓN DE COLOR], 'TIPO' AS MODELO
    FROM SalesLT.Product AS P
    

    Como observas, ante la misma consulta, el resultado es bien diferente.

    Además cuando programes en tu lenguaje cliente, si te acostumbras a utilizar ", tendrás que utilizar secuencias escape, para que los strings no se vean partidos, y rompe un poco la legibilidad del código.

    Yo te recomiendo que utilices []

    • Marcado como respuesta James2016-2 domingo, 19 de mayo de 2019 6:08
    domingo, 19 de mayo de 2019 5:10
  • ok, gracias.
    domingo, 19 de mayo de 2019 6:08
  • Una observación más: Los delimitadores solo son obligatorios cuando en el nombre del objeto existe algún carácter "especial" que hace que el nombre no se reconozca como identificador. Por ejemplo, puedes poner:

    Select * from MiTabla -- Nótese que MiTabla no lleva delimitadores

    Pero en estos casos se requieren:

    Select * from [Mi Tabla] -- Se necesitan delimitadores debido al espacio en blanco

    Select * from [Mi-Tabla] -- Se necesitan delimitadores debido al guión

    Select * from [2Mitabla] -- Se necesitan delimitadores debido a que comienza con un número

    En los tres casos se puede poner comillas en lugar de los corchetes a condición de que antes hayas activado los "quoted identifiers".

    • Marcado como respuesta James2016-2 domingo, 19 de mayo de 2019 17:57
    domingo, 19 de mayo de 2019 16:33
  • Ah, ok, son necesarios no sólo cuando se usa espacios, sino, de manera general, cuando se usa otros caracteres que no son letras, gracias por la observación.
    domingo, 19 de mayo de 2019 17:57