oracle SQL查询以获取列的精度值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7318683/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 00:17:41  来源:igfitidea点击:

SQL query to get the precision value of a column

sqlsql-serveroracle

提问by user917670

I need a sql query that gets the precision value for certain columns.. I am mainly concerned with a decimal type column and I need the precision value for the same.

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

I realise that it is possible to do so in certain versions and vendors of database servers. It would be nice if you could list down for a few of them.

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

采纳答案by Hugh Jones

Oracle:

甲骨文:

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

Firebird (+ Interbase) :

火鸟(+ 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 (Not Tested !) :

MySql(未测试!):

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

回答by Baz1nga

for sql server:

对于 sql 服务器:

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

for oracle:

甲骨文:

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

回答by Martin Smith

For SQL Server you can also use NUMERIC_PRECISIONin INFORMATION_SCHEMA.COLUMNS.

对于 SQL Server,您还可以NUMERIC_PRECISIONINFORMATION_SCHEMA.COLUMNS.

I assume this may well be portable.

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

回答by Andomar

For SQL Server, it's:

对于 SQL Server,它是:

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

回答by ain

For FireBird and InterBase

对于 FireBird 和 InterBase

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