您如何访问 SELECT Data_Type 的比例和精度?
How do you access or SELECT Scale and Precision of a Data_Type?
我正在尝试打印来自 SQL 开发人员的报告。当我 SELECT Data_Type 时,我得到了预期的数据类型,但我希望 Scale 和 Precision 也在它旁边......例如
CHAR(3, 0)
NUMBER(7, 0)
现在我只获取数据类型本身,例如:
CHAR
NUMBER
我缺少什么语法来访问或 SELECT 比例和精度?
如果您要“选择”数据类型,我假设您是从 all_tab_columns
之类的东西中“选择”。正确的?像这样:
select column_name, data_type
from all_tab_columns
where owner = 'SCOTT' and table_name = 'EMP'
;
COLUMN_NAME DATA_TYPE
------------ ------------
EMPNO NUMBER
ENAME VARCHAR2
JOB VARCHAR2
MGR NUMBER
HIREDATE DATE
SAL NUMBER
COMM NUMBER
DEPTNO NUMBER
现在,您想知道 VARCHAR2
列的最大长度,以及 NUMBER
的精度和小数位数,对吗?
向 select
添加更多列。像这样:
select column_name, data_type, char_col_decl_length, data_precision, data_scale
from all_tab_columns
where owner = 'SCOTT' and table_name = 'EMP'
;
COLUMN_NAME DATA_TYPE CHAR_COL_DECL_LENGTH DATA_PRECISION DATA_SCALE
------------ ------------ -------------------- -------------- ----------
EMPNO NUMBER 4 0
ENAME VARCHAR2 10
JOB VARCHAR2 9
MGR NUMBER 4 0
HIREDATE DATE
SAL NUMBER 7 2
COMM NUMBER 7 2
DEPTNO NUMBER 2 0
或者,在 SQL*Plus(或实现其功能的其他接口)中,您可以使用 SQL*Plus 命令 describe
:
describe scott.emp
Name Null? Type
-------- ----- ------------
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
很可能,SQL*Plus 会使用 select
查询实现自己的 describe
命令,就像我之前分享的那样。
为什么不直接用
描述table
Desc tablename
或者
Describe tablename
我正在尝试打印来自 SQL 开发人员的报告。当我 SELECT Data_Type 时,我得到了预期的数据类型,但我希望 Scale 和 Precision 也在它旁边......例如
CHAR(3, 0)
NUMBER(7, 0)
现在我只获取数据类型本身,例如:
CHAR
NUMBER
我缺少什么语法来访问或 SELECT 比例和精度?
如果您要“选择”数据类型,我假设您是从 all_tab_columns
之类的东西中“选择”。正确的?像这样:
select column_name, data_type
from all_tab_columns
where owner = 'SCOTT' and table_name = 'EMP'
;
COLUMN_NAME DATA_TYPE
------------ ------------
EMPNO NUMBER
ENAME VARCHAR2
JOB VARCHAR2
MGR NUMBER
HIREDATE DATE
SAL NUMBER
COMM NUMBER
DEPTNO NUMBER
现在,您想知道 VARCHAR2
列的最大长度,以及 NUMBER
的精度和小数位数,对吗?
向 select
添加更多列。像这样:
select column_name, data_type, char_col_decl_length, data_precision, data_scale
from all_tab_columns
where owner = 'SCOTT' and table_name = 'EMP'
;
COLUMN_NAME DATA_TYPE CHAR_COL_DECL_LENGTH DATA_PRECISION DATA_SCALE
------------ ------------ -------------------- -------------- ----------
EMPNO NUMBER 4 0
ENAME VARCHAR2 10
JOB VARCHAR2 9
MGR NUMBER 4 0
HIREDATE DATE
SAL NUMBER 7 2
COMM NUMBER 7 2
DEPTNO NUMBER 2 0
或者,在 SQL*Plus(或实现其功能的其他接口)中,您可以使用 SQL*Plus 命令 describe
:
describe scott.emp
Name Null? Type
-------- ----- ------------
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
很可能,SQL*Plus 会使用 select
查询实现自己的 describe
命令,就像我之前分享的那样。
为什么不直接用
描述table Desc tablename
或者
Describe tablename