2010-04-07 21 views
8

Ejecuto una selección para obtener la estructura de una tabla. quiero obtener información sobre las columnas, como su nombre o si es nulo o si se trata de la clave principal .. que hacer algo como estosql server: obtener el valor predeterminado de una columna

....sys.columns c... 
c.precision, 
c.scale, 
c.is_nullable as isnullable, 
c.default_object_id as columndefault, 
c.is_computed as iscomputed, 

pero por valor predeterminado Me da la id..something como 454545454, pero quiero obtener el valor "xxxx". ¿Cuál es la tabla para buscar o cuál es la función para convertir esa identificación al valor? Gracias

Respuesta

10

Usted puede hacer esto (hecho un SELECT * sólo para que pueda ver toda la información disponible):

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE.... 

Esto incluye una columna "COLUMN_DEFAULT" en el conjunto de resultados.

7

Uso

Select * From INFORMATION_SCHEMA.COLUMNS 

hay una columna llamada COLUMN_DEFAULT

1

'facturas' es una tabla de ejemplo

select 
COLUMN_DEFAULT   --default 
,IS_NULLABLE    -- is nullable 
,NUMERIC_PRECISION  --number of digits (binary or decimal depending on radix) 
,NUMERIC_PRECISION_RADIX --decimal places 
,NUMERIC_SCALE   --number of digits to right of decimal point 
,COLUMNPROPERTY(OBJECT_ID('bills'),COLUMN_NAME,'Iscomputed') AS ISCOMPUTED --is computed 
from INFORMATION_SCHEMA.columns where TABLE_name='bills' 

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where TABLE_NAME='bills' and CONSTRAINT_TYPE='PRIMARY KEY' 
+0

Este originalmente dijo que NUMERIC_RADIX es el número de decimal lugares. Eso es incorrecto. El radix es la base del sistema numérico en el que se almacena el valor (2 o 10). NUMERIC_PRECISION es el número total de dígitos almacenados (decimal o binario, dependiendo de la raíz), y NUMERIC_SCALE es el número de dígitos a la derecha del punto decimal –

Cuestiones relacionadas