Java Oracle DB查询数据长度(返回的数据是什么)
我正在java程序中对Oracle数据库运行一些查询。选择某个表后,此查询将运行并为用户返回一些特征 我的代码的简化版本如下Java Oracle DB查询数据长度(返回的数据是什么),java,database,oracle,Java,Database,Oracle,我正在java程序中对Oracle数据库运行一些查询。选择某个表后,此查询将运行并为用户返回一些特征 我的代码的简化版本如下 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(
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);
我不确定返回的数据长度
它是否返回字段中数据的长度?或者它返回的是最大值。经过一番研究,我遇到了相互矛盾的意见。当比较我得到的数据类型和它的相关长度时,似乎它可能是最大长度,但谁知道字段可能是最大的
例如:
数据类型=编号返回的数据长度=22
数据类型=VARCHAR2返回的数据长度=2000
奖金:+5分,期末成绩,1次免费缺课
如何更改查询以获取我没有的数据。实际数据长度或最大数据长度。这应该表示创建列时使用的长度
i、 数字默认为22,但您可以覆盖该数字5或其他内容。 varchar2 4000等 为了找到列中包含的值的实际最大长度,需要查询表本身,而不是数据字典
SELECT max( len( mycol )) from mytab;
可能会收集到一些关于这些方面的统计数据,但这对于您的应用程序来说可能不可靠。测试应该相对容易。请注意,没有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
现在您已经看到了实际的结果,应该清楚“数据长度”列中返回的长度。ahh正确,我的实际代码使用了我将编辑的所有选项卡。我想我有时间了,哈哈。我想我明白了,所以我要澄清一下这两个答案,这是这个领域能容纳的最大允许量?不是它创建时使用的最大数量?@harper89-我不确定你所说的创建时使用的最大数量是什么意思。所有_TAB_列都会告诉您创建该列时所声明的最大大小。它并没有告诉您在创建表之后插入到该列中的数据。我指的是另一个答案。这就是我需要的,只需要知道允许的最大值,而不是已经存在的最大值。谢谢你。尽管我的巧妙措辞让我觉得自己的奖金问题很搞笑,但这不是家庭作业。数字默认为22,但您可以忽略数字5的数据长度不精确。创建表t n编号5;从所有_选项卡_列中选择列_名称、数据_长度,其中表_名称='T';返回22的数据长度。