Determinar se uma string contém uma substring especificada no Hive

Método 1: curtir

1.1 Pesquisa tradicional como:

select 'this 是 china' like('%是%');	--true
select 'this 是 china' like '%是%';		--true

select 'this 是 china' like('%否%');	--false
select 'this 是 china' like '%否%';		--false

1.2 Pesquisa baseada em expressões regulares:

Consulte o uso de expressões regulares Java:

select 'this 是 china' rlike('是');		--true

select 'foobar' rlike('foo');			--true	
select 'foobar' rlike('bar');			--true
select 'foobar' rlike('^f.*r$');		--true

Método 2: localizar

uso:

valor de retorno Nome da função Descrição da função
int locate(string substr, string str[, int pos]) [1. Descrição do parâmetro: Parâmetro 1-substr: substring de caracteres a ser pesquisada; Parâmetro 2-str: string original; Parâmetro 3-pos: posição especificada, buscará a primeira ocorrência da string especificada nesta posição e posições subsequentes .] …[Descrição em inglês: Retorna a posição da primeira ocorrência de substr em str após a posição pos.]

Casos de uso:

select locate('i','this is china'); 	--3
select locate('i','this is china',4);	--6
select locate('i','this is china',7);	--11

Método 3: regexp

uso:

operador tipos de operandos esquerdo e direito Descrição da função
A REGEXP B cordas Pertence ao operador relacional, o mesmo que a função rlike, julgada de acordo com a expressão regular Java. [1. Descrição do parâmetro: parâmetro 1-A: string original; parâmetro 2-B: substring a ser comparada] …[Descrição em inglês: NULL if A ou B é NULL, TRUE se qualquer substring (possivelmente vazia) de A corresponder à expressão regular Java B, caso contrário FALSE. Por exemplo, 'foobar' RLIKE 'foo' é avaliado como TRUE e 'foobar' RLIKE '^f também. * R$'.]
select 'this 是 china' regexp('是'); --true

--以下2种写法等价
select 'this 是 china' regexp('否'); --false
select 'this 是 china' regexp '否';  --false

Acho que você gosta

Origin blog.csdn.net/liuwei0376/article/details/123083587
Recomendado
Clasificación