SQL查询以获取列的精度值

时间:2011-09-06 10:50:54

标签: sql sql-server oracle

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

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

5 个答案:

答案 0 :(得分:5)

用于sql server:

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

for oracle:

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

答案 1 :(得分:4)

对于SQL Server,您还可以在NUMERIC_PRECISION中使用INFORMATION_SCHEMA.COLUMNS

我认为这可能是便携式的。

答案 2 :(得分:3)

甲骨文:

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

Firebird(+ 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

答案 3 :(得分:1)

对于SQL Server,它是:

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

答案 4 :(得分:0)

对于FireBird和InterBase

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