Hive 在配置单元列中存储和查询空白值
我需要在配置单元表的某些列中存储长度为1、2和3的空白字符串 存储:Hive 在配置单元列中存储和查询空白值,hive,hiveql,Hive,Hiveql,我需要在配置单元表的某些列中存储长度为1、2和3的空白字符串 存储: 如果我的列类型是char,那么我看到数据总是在存储之前被修剪。i、 e.长度(列)始终为0 如果我的列类型是varchar,则不修剪数据。因此,长度(列)分别为1、2和3。 这样就解决了我的存储问题 查询: 我无法按值查询列。 说从列=''的配置单元表中选择* 只有当我做类似的事情时,它才会起作用 从配置单元表中选择*,其中长度(列)>0,修剪(列)='' 有没有办法分开处理? 假设我想查询列值为长度为3的空白字符串的记录?我
从配置单元表中选择*,其中长度(列)>0,修剪(列)=''代码>
drop table dummy_tbl;
CREATE TABLE dummy_tbl (
col1 char(1),
col2 varchar(1),
col3 char(3),
col4 varchar(3)) ;
insert into dummy_tbl values (' ', ' ', ' ', ' ');
select length(col1), length(col2), length(col3), length(col4) from dummy_tbl;
结果:
c0 c1 c2 c3
0 1 0 2
Varchar列的工作方式绝对正确。col2是一个很好的例子。
col4 varchar(2)工作正常,此查询返回1:
select count(*) from dummy_tbl where col4=' '; --returns 1
所有字符列的长度显示为0,比较忽略空格,如下所示:
您可以使用长度适当的varchar
。如果您不确定长度,请键入字符串。运行Hive 2.1.1
drop table dummy_tbl;
CREATE TABLE dummy_tbl (
col1 char(1),
col2 varchar(1),
col3 char(3),
col4 varchar(3)) ;
insert into dummy_tbl values (' ', ' ', ' ', ' ');
select length(col1), length(col2), length(col3), length(col4) from dummy_tbl;
结果:
c0 c1 c2 c3
0 1 0 2
Varchar列的工作方式绝对正确。col2是一个很好的例子。
col4 varchar(2)工作正常,此查询返回1:
select count(*) from dummy_tbl where col4=' '; --returns 1
所有字符列的长度显示为0,比较忽略空格,如下所示:
您可以使用长度适当的
varchar
。或者STRING
type,如果您不确定长度。Char类型类似于Varchar,但它们是固定长度的,这意味着比指定长度值短的值用空格填充,但在比较过程中尾随空格不重要。如果值的长度更大,则在配置单元中对其进行修剪(例外)。对于varchar列,所有空格都是重要的,比如col=''应该可以很好地工作。我更新了我的问题,添加了我尝试过的代码…测试过的代码。Col4按预期工作,返回一行。也许你的蜂巢版本不稳定?使用字符串-它不需要再修剪就可以工作。这张桌子是作为拼花地板存放的。添加到主要questionChar类型的代码片段与Varchar类似,但它们是固定长度的,这意味着比指定长度值短的值将填充空格,但在比较过程中尾随空格并不重要。如果值的长度更大,则在配置单元中对其进行修剪(例外)。对于varchar列,所有空格都是重要的,比如col=''应该可以很好地工作。我更新了我的问题,添加了我尝试过的代码…测试过的代码。Col4按预期工作,返回一行。也许你的蜂巢版本不稳定?使用字符串-它不需要再修剪就可以工作。这张桌子是作为拼花地板存放的。添加到主问题的代码段尝试了更多。这就是我发现的。数据存储为拼花地板。这就是问题的根源。正在更新问题中的代码。请重试。这就是我发现的。数据存储为拼花地板。这就是问题的根源。更新我问题中的代码。