COLUMNPROPERTY (Transact-SQL)
Devuelve información acerca de una columna o de un parámetro.
Convenciones de sintaxis de Transact-SQL
Sintaxis
COLUMNPROPERTY ( id , column , property )
Argumentos
id
Es una expresión que contiene el identificador (Id.) de la tabla o del procedimiento.column
Es una expresión que contiene el nombre de la columna o del parámetro.property
Es una expresión que contiene la información que se devuelve para id y puede tener uno de los siguientes valores.Valor
Descripción
Valor devuelto
AllowsNull
Acepta valores NULL.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
ColumnId
Valor del Id. de columna correspondiente a sys.columns.column_id.
Id. de columna
[!NOTA]
Cuando se consultan varias columnas, pueden aparecer espacios en la secuencia de valores de los Id. de columna.
FullTextTypeColumn
TYPE COLUMN de la tabla que contiene la información del tipo de documento de column.
Id. de TYPE COLUMN de texto completo de la columna pasada como segundo parámetro de esta propiedad.
IsComputed
La columna es una columna calculada.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsCursorType
El parámetro de procedimiento es del tipo CURSOR.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsDeterministic
La columna es determinista. Esta propiedad solo se aplica a columnas calculadas y columnas de vistas.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida. No es una columna calculada o una columna de vista.
IsFulltextIndexed
La columna se ha registrado para la indización de texto completo.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsIdentity
La columna utiliza la propiedad IDENTITY.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsIdNotForRepl
La columna comprueba el valor IDENTITY_INSERT.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsIndexable
La columna se puede indizar.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsOutParam
El parámetro de procedimiento es un parámetro de salida.
1 = TRUE
0 = FALSE o NULL = La entrada no es válida.
IsPrecise
La columna es precisa. Esta propiedad solo se aplica a columnas deterministas.
1 = TRUE
0 = FALSE o NULL = La entrada no es válida. No es una columna determinista
IsRowGuidCol
La columna es del tipo de datos uniqueidentifier y se ha definido con la propiedad ROWGUIDCOL.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsSystemVerified
El Motor de base de datos puede comprobar las propiedades de determinismo y precisión de la columna. Esta propiedad solo se aplica a columnas calculadas y columnas de vistas.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
IsXmlIndexable
La columna XML se puede utilizar en un índice XML.
1 = TRUE
0 = FALSE
NULL = La entrada no es válida.
Precision
Longitud del tipo de datos de la columna o del parámetro.
Longitud del tipo de datos especificado para la columna
-1 = xml o tipos de valores grandes
NULL = La entrada no es válida.
Scale
Escala del tipo de datos de la columna o del parámetro.
Escala
NULL = La entrada no es válida.
StatisticalSemantics
La columna está habilitada para la indización semántica.
1 = TRUE
0 = FALSE
SystemDataAccess
La columna se deriva de una función que tiene acceso a los datos de los catálogos del sistema o de las tablas virtuales del sistema de SQL Server. Esta propiedad solo se aplica a columnas calculadas y columnas de vistas.
1 = TRUE (indica acceso de solo lectura)
0 = FALSE
NULL = La entrada no es válida.
UserDataAccess
La columna se deriva de una función que tiene acceso a los datos de las tablas de usuario, incluidas las vistas y tablas temporales, almacenadas en la instancia local de SQL Server. Esta propiedad solo se aplica a columnas calculadas y columnas de vistas.
1 = TRUE (indica acceso de solo lectura)
0 = FALSE
NULL = La entrada no es válida.
UsesAnsiTrim
ANSI_PADDING se estableció en ON la primera vez que se creó la tabla. Esta propiedad solo se aplica a columnas o parámetros de tipo char o varchar.
1= TRUE
0= FALSE
NULL = La entrada no es válida.
IsSparse
La columna es una columna dispersa. Para obtener más información, vea Usar columnas dispersas.
1= TRUE
0= FALSE
NULL = La entrada no es válida.
IsColumnSet
La columna es un conjunto de columnas. Para obtener más información, vea Usar conjuntos de columnas.
1= TRUE
0= FALSE
NULL = La entrada no es válida.
Tipos de valor devueltos
int
Excepciones
Devuelve NULL si se produce un error o si el autor de la llamada no tiene permiso para ver el objeto.
Un usuario solo puede ver los metadatos de elementos protegibles que posea o para los que se le haya concedido permiso. Esto significa que las funciones integradas de emisión de metadatos, como COLUMNPROPERTY, pueden devolver NULL si el usuario no tiene ningún permiso para el objeto. Para obtener más información, vea Configuración de visibilidad de los metadatos.
Comentarios
Cuando compruebe la propiedad determinista de una columna, compruebe primero si se trata de una columna calculada. IsDeterministic devuelve NULL para las columnas no calculadas. Las columnas calculadas se pueden especificar como columnas de índice.
Ejemplos
En el ejemplo siguiente se devuelve la longitud de la columna LastName.
USE AdventureWorks2012;
GO
SELECT COLUMNPROPERTY( OBJECT_ID('Person.Person'),'LastName','PRECISION')AS 'Column Length';
GO
El conjunto de resultados es el siguiente.
Column Length
-------------
50