雖然Hive支持類似查詢的積極:ex。是否存在Hive等價的SQL「不喜歡」
select * from table_name where column_name like'root〜%';
蜂房不支持負像查詢:恩。
select * from table_name where column_name not like'root〜%';
有誰知道Hive支持的同等解決方案嗎?
雖然Hive支持類似查詢的積極:ex。是否存在Hive等價的SQL「不喜歡」
select * from table_name where column_name like'root〜%';
蜂房不支持負像查詢:恩。
select * from table_name where column_name not like'root〜%';
有誰知道Hive支持的同等解決方案嗎?
如果你還沒有退房https://cwiki.apache.org/confluence/display/Hive/LanguageManual。我一直在爲編寫配置單元的查詢時參考它。
我沒有做任何事情,我正在試圖匹配一個單詞的一部分,但你可以看看RLIKE
(在本節https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#Relational_Operators)
這可能是一個黑客位的工作,但你可以執行一個子查詢,檢查它是否與正值匹配,並執行CASE
(http://wiki.apache.org/hadoop/Hive/LanguageManual/UDF#Conditional_Functions)以使主查詢具有已知值以檢查其是否匹配。
另一種選擇是編寫一個UDF來做檢查。
我只是頭腦風暴,而沒有進入蜂巢,所以我可能會失去一些明顯的東西。 :)
希望能以某種方式或其他方式幫助。 \^_ ^/
編輯:從我的評論下面添加額外的方法。
對於您提供的示例colName RLIKE'[^ r] [^ o] [^ o] [^ t]〜\ w'這可能不是最優的REGEX,而是要查找的東西而不是子查詢
試試這個:
Where Not (Col_Name like '%whatever%')
還與RLIKE:
Where Not (Col_Name rlike '.*whatever.*')
其實,你可以把它像這樣:
select * from table_name where not column_name like 'root~%';
在SQL:
select * from table_name where column_name not like '%something%';
在蜂巢:
select * from table_name where not (column_name like '%something%');
NOT LIKE已經在HIVE版本0.8.0得到支持,請檢查JIRA。
使用REGEXP_EXTRACT作品,以及:
select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
在黑斑羚,您可以使用!=
不喜歡:
columnname != value
它看起來像CASE會做什麼,我需要它,但我的語法有問題。它是否在Select子句或Where子句中出現?此嘗試失敗:'create table tmp_table as CASE WHEN a.username like'twitter〜%'THEN''ELSE select sum(file_size)as storage,sum(bandwidth)as bandwidth from tmp_sites_compare1 a;'但它對我來說沒有任何意義,因爲它在where子句中......思考? – CMaury 2011-04-12 18:11:48
@CMaury:'CASE'在'SELECT'子句中。 'SELECT CASE WHEN ... THEN ... END colName FROM ...' – Nija 2011-04-12 19:00:07
@CMaury:我開始在'RLIKE'上玩弄我的作品,雖然它不會對所有情況都是最佳的使用正則表達式'not'''''。對於你提供的例子'colName RLIKE'[^ r] [^ o] [^ o] [^ t]〜\\ w''這可能不是最優的REGEX,而是要查看的東西而不是子查詢 – Nija 2011-04-13 04:03:09