2010-04-07 7 views
8

J'exécute une sélection pour obtenir la structure d'une table. Je veux obtenir des informations sur les colonnes comme son nom ou si elle est nulle ou si elle est la clé primaire .. je fais quelque chose comme çasql server: récupère la valeur par défaut d'une colonne

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

mais pour la valeur par défaut i obtenir le id..something comme 454545454, mais je veux obtenir la valeur "xxxx". Quelle est la table à rechercher ou quelle est la fonction pour convertir cet identifiant à la valeur. Merci

Répondre

10

Vous pouvez le faire (fait un SELECT * juste si vous pouvez voir toutes les informations disponibles):

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE.... 

Cela comprend une colonne « column_default » dans le ResultSet.

7

Utilisez

Select * From INFORMATION_SCHEMA.COLUMNS 

il y a une colonne appelée COLUMN_DEFAULT

1

'factures' est une table exemple

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

Cela dit à l'origine que NUMERIC_RADIX est le nombre de décimales des endroits. C'est incorrect. La base est la base du système numérique dans lequel la valeur est stockée (2 ou 10). NUMERIC_PRECISION est le nombre total de chiffres enregistrés (décimal ou binaire, selon la base), et NUMERIC_SCALE est le nombre de chiffres à droite de la virgule décimale –

Questions connexes