Oracle DB查询data_length(它返回什么)

sea*_*alz 2 java database oracle

我正在从我的java程序运行Oracle DB上的一些查询.选择某个表后,此查询将运行并返回该用户的一些特征.

我的代码的简化版本如下.

String query = "SELECT column_name, data_type, data_length FROM all_tab_columns WHERE table_name = 'blahblah'";
String ColumnName;
String DataType;
String DataLength;

System.out.println(ColumName);
System.out.println(DataType);
System.out.println(DataLength);
Run Code Online (Sandbox Code Playgroud)

我不确定是什么data_length回来了.

它是否返回字段中的数据长度?或者是它返回最大值.经过一番搜索,我发现了相互矛盾的意见.当我将数据类型与其相关长度进行比较时,似乎它可能是最大长度,但谁知道该字段可能只是最大化了?

例如:

Data Type = Number 正在回归 Data Length = 22

Data Type = VARCHAR2 正在回归 Data Length = 2000

奖金:(最终成绩+5分,上课1分)

我怎么能改变查询来获取我没有的数据.(实际数据长度或最大数据长度).

Jus*_*ave 8

它应该相对容易测试.请注意,没有ALL_TABLE_COLUMNS视图 - 有一个ALL_TAB_COLUMNS和一个ALL_TAB_COLS视图提供此信息.我将创建一个空表并运行我认为你的教授想要的查询.

SQL> create table empty_table (
  2    col1 number(10,2),
  3    col2 varchar2(100),
  4    col3 varchar2(100 byte),
  5    col4 varchar2(100 char)
  6  );

Table created.

SQL>   select column_name, data_type, data_length
  2      from all_tab_columns
  3     where table_name = 'EMPTY_TABLE'
  4  order by column_name;

COLUMN_NAME                    DATA_TYPE      DATA_LENGTH
------------------------------ -------------- -----------
COL1                           NUMBER                  22
COL2                           VARCHAR2               100
COL3                           VARCHAR2               100
COL4                           VARCHAR2               300
Run Code Online (Sandbox Code Playgroud)

现在您已经看到了实际结果,应该清楚DATA_LENGTH列中返回的长度.