Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Oracle DB查询数据长度(返回的数据是什么)_Java_Database_Oracle - Fatal编程技术网

Java Oracle DB查询数据长度(返回的数据是什么)

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(

我正在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(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的数据长度。