Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
Sql 如何在所有行中搜索文本,而不单独指定每一列_Sql_Hadoop_Hive_Apache Spark Sql_Hiveql - Fatal编程技术网

Sql 如何在所有行中搜索文本,而不单独指定每一列

Sql 如何在所有行中搜索文本,而不单独指定每一列,sql,hadoop,hive,apache-spark-sql,hiveql,Sql,Hadoop,Hive,Apache Spark Sql,Hiveql,例如 给定下表和数据,查找包含单词“on”的行(不区分大小写) 简单(但有限)的解决方案 此解决方案仅与包含“基元”类型的表相关 (无结构、数组、映射等) 该解决方案的问题是,所有列都没有分隔符(否,concat_ws(*)产生一个异常),因此边界中的单词变成单个单词,例如- Greyhound和On变成GreyhoundOn select i ,regexp_replace(concat(*),'(?i)on','==>$0<==') as rec from

例如

给定下表和数据,查找包含单词“on”的行(不区分大小写)

简单(但有限)的解决方案 此解决方案仅与包含“基元”类型的表相关
(无结构、数组、映射等)


该解决方案的问题是,所有列都没有分隔符(否,
concat_ws(*)
产生一个异常),因此边界中的单词变成单个单词,例如-
Greyhound
On
变成
GreyhoundOn

select  i
       ,regexp_replace(concat(*),'(?i)on','==>$0<==') as rec

from    t

where   concat(*) rlike '(?i)on'    
;


选择cast(拆分(rec,\\x01')[0]作为int)作为i
,regexp_replace(regexp_replace(rec),(?ix)\\b on\\b','=>0美元
select  i
       ,regexp_replace(concat(*),'(?i)on','==>$0<==') as rec

from    t

where   concat(*) rlike '(?i)on'    
;
+---+-----------------------------------------------------------------------------------------------------------+
|   |                                                    rec                                                    |
+---+-----------------------------------------------------------------------------------------------------------+
| 1 | 12017-03-15Now we take our timeso n==>on<==chalantAnd spend our nights so b==>on<== vivant                |
| 2 | 22017-03-16Quick as a winkShe changed her mindShe stood ==>on<== the tracks                               |
| 3 | 32017-03-17But I’m talking a Greyhound==>On<== the Huds==>on<== River LineI’m in a New York state of mind |
+---+-----------------------------------------------------------------------------------------------------------+
select  i
       ,regexp_replace(concat(*),'(?ix)\\b on \\b','==>$0<==') as delim_rec

from   (select  i
               ,printf(concat('%s',repeat('|||%s',field(unhex(1),*,unhex(1))-2)),*)   as delim_rec   

        from    t
        ) t

where  delim_rec rlike '(?ix)\\b on \\b'        
;
+---+------------------------------------------------------------------------------------------------------------------+
| i |                                                    delim_rec                                                     |
+---+------------------------------------------------------------------------------------------------------------------+
| 2 | 22|||2017-03-16|||Quick as a wink|||She changed her mind|||She stood ==>on<== the tracks                         |
| 3 | 33|||2017-03-17|||But I’m talking a Greyhound|||==>On<== the Hudson River Line|||I’m in a New York state of mind |
+---+------------------------------------------------------------------------------------------------------------------+
create external table t_ext (rec string) 
row format delimited
fields terminated by '0'
location '/user/hive/warehouse/t'   
;
select  cast(split(rec,'\\x01')[0] as int)                                              as i
       ,regexp_replace(regexp_replace(rec,'(?ix)\\b on \\b','==>$0<=='),'\\x01','|||')  as rec

from    t_ext

where   rec rlike '(?ix)\\b on \\b'               
;
+---+-----------------------------------------------------------------------------------------------------------------+
| i |                                                       rec                                                       |
+---+-----------------------------------------------------------------------------------------------------------------+
| 2 | 2|||2017-03-16|||Quick as a wink|||She changed her mind|||She stood ==>on<== the tracks                         |
| 3 | 3|||2017-03-17|||But I’m talking a Greyhound|||==>On<== the Hudson River Line|||I’m in a New York state of mind |
+---+-----------------------------------------------------------------------------------------------------------------+