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分)
我怎么能改变查询来获取我没有的数据.(实际数据长度或最大数据长度).
它应该相对容易测试.请注意,没有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列中返回的长度.