Oracle SQL - 数据类型

Oracle SQL - Data Type

您好,我目前正忙于在 SQL 中创建一个视图。我对一种数据类型有一个问题,对于我的值 X_SOURCE_ADDRESS 这 2020 年的最大字符是 18 .

但在 DB 中,此列在 VARCHAR2(255) 中,在 powerBi 中,此列的数据量很大。

是否可以声明另一种数据类型?

查询:

专栏:

不久:CAST.

这是一个示例:table dept 有一个名为 dname 的列,即 varchar2(20):

SQL> desc dept
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 DEPTNO                                    NOT NULL NUMBER
 DNAME                                              VARCHAR2(20)        --> this
 LOC                                                VARCHAR2(20)

如果我创建视图,dept 列将继承 table 的数据类型:

SQL> create view v_dept as select * from dept;

View created.

SQL> desc v_dept
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 DEPTNO                                    NOT NULL NUMBER
 DNAME                                              VARCHAR2(20)          --> this
 LOC                                                VARCHAR2(20)

但是,如果您 cast 将其用于其他用途,您会得到想要的:

SQL> drop view v_dept
  2  /

View dropped.

SQL> create view v_dept as
  2    select deptno,
  3           cast(dname as varchar2(50)) as dname,         --> this
  4           loc
  5    from dept;

View created.

SQL> desc v_dept
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 DEPTNO                                    NOT NULL NUMBER
 DNAME                                              VARCHAR2(50)       --> this
 LOC                                                VARCHAR2(20)

SQL>