获取列的精度值的SQL查询

获取列的精度值的SQL查询,sql,sql-server,oracle,Sql,Sql Server,Oracle,我需要一个sql查询来获取某些列的精度值。。我主要关心的是十进制类型的列,我需要相同的精度值 我意识到,在某些版本和数据库服务器供应商中,这样做是可能的。如果您能列出其中一些,那就太好了。对于SQL Server,它是: select object_name(object_id), name, precision from sys.columns 甲骨文: SELECT DATA_LENGTH, DATA_PRECISION FROM ALL_TAB_COLUMNS WHERE TABLE_N

我需要一个sql查询来获取某些列的精度值。。我主要关心的是十进制类型的列,我需要相同的精度值

我意识到,在某些版本和数据库服务器供应商中,这样做是可能的。如果您能列出其中一些,那就太好了。

对于SQL Server,它是:

select object_name(object_id), name, precision from sys.columns
甲骨文:

SELECT DATA_LENGTH, DATA_PRECISION
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = :TableName
AND COLUMN_NAME = :ColumnName
Firebird(+Interbase):

MySql(未测试!):


对于SQL Server,您还可以在
信息\u架构.列中使用
数值\u精度


我认为这很可能是可移植的。

用于FireBird和InterBase

SELECT 
  RDB$FIELD_PRECISION, RDB$FIELD_SCALE
FROM RDB$FIELDS
WHERE RDB$FIELD_NAME = columnsDomainName
对于sql server:

select precision from sys.columns where name='<column_name>' 
从sys.columns中选择精度,其中name=''
对于oracle:

select data_precision from all_tab_columns  where column_name = '<columnName>'
从列名称为“”的所有列中选择数据精度
select precision from sys.columns where name='<column_name>' 
select data_precision from all_tab_columns  where column_name = '<columnName>'