2011-09-06 17 views
4

我需要一個sql查詢來獲取某些列的精度值。我主要關注一個十進制類型的列,我需要相同的精度值。SQL查詢來獲得列的精度值

我意識到在數據庫服務器的某些版本和供應商中可以這樣做。如果你能列出其中的一些,這將是很好的。

回答

3

甲骨文:

SELECT DATA_LENGTH, DATA_PRECISION 
FROM ALL_TAB_COLUMNS 
WHERE TABLE_NAME = :TableName 
AND COLUMN_NAME = :ColumnName 

火鳥(+ Interbase的):(!未測試)

SELECT 
     rdb$field_scale, 
     rdb$field_precision 
FROM rdb$relations r 
     JOIN rdb$relation_fields rf 
     ON rf.rdb$relation_name = r.rdb$relation_name 
     JOIN rdb$fields fld 
     ON rf.rdb$field_source = fld.rdb$field_name 
WHERE r.rdb$relation_name = :TableName 
     AND rf.rdb$field_name = :ColumnName 

MySQL的:

SELECT 
    NUMERIC_PRECISION, NUMERIC_SCALE 
FROM 
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_NAME = :TableName AND 
    COLUMN_NAME = :ColumnName 
1

對於SQL Server,它是:

select object_name(object_id), name, precision from sys.columns 
4

對於SQL Server,您還可以在INFORMATION_SCHEMA.COLUMNS中使用NUMERIC_PRECISION

我認爲這可能是可移植的。

0

對於火鳥的InterBase

SELECT 
    RDB$FIELD_PRECISION, RDB$FIELD_SCALE 
FROM RDB$FIELDS 
WHERE RDB$FIELD_NAME = columnsDomainName 
4

對於SQL Server:

select precision from sys.columns where name='<column_name>' 

對於Oracle:

select data_precision from all_tab_columns where column_name = '<columnName>'