search Função

Aplica-se a:sim Databricks Runtime 19.0 e superiores

Important

Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir as pré-visualizações de Azure Databricks.

Retorna true se search_pattern for encontrado em qualquer um dos valores de coluna alvo fornecidos.

Para informações sobre a aceleração search de consultas com índices de pesquisa em texto completo, consulte Índices de pesquisa em texto integral nas tabelas geridas do Catálogo Unity.

Syntax

search ( column [, ...], search_pattern [, mode => mode] )

Arguments

  • column: Uma ou mais expressões-alvo pesquisáveis. Uma expressão pesquisável tem um destes tipos:

    • STRING com UTF8_BINARY colação.
    • VARIANT.
    • STRUCT com pelo menos um campo pesquisável. A estrutura é automaticamente expandida para os seus campos foliares pesquisáveis a qualquer profundidade de nidificação.
    • ARRAY de qualquer tipo pesquisável.

    Não existe um cast implícito para valores-alvo que não sejam cadeia.

  • search_pattern: Uma expressão dobrável (constante) STRING com o valor a procurar.

  • mode: Um argumento opcional nomeado STRING que controla como as partidas são realizadas. Um dos seguintes:

    • 'substring' (defeito): Corresponde se search_pattern aparecer em qualquer lugar dentro de um valor-alvo. Equivalente à contains função.
    • 'word': Faz corresponder as palavras individuais em search_pattern contra um valor-alvo, independentemente da ordem.

Devoluções

Um BOOLEAN.

  • true se search_pattern se encontra em qualquer um dos valores da coluna alvo.
  • NULL se search_pattern não for encontrado em nenhum valor de coluna alvo e pelo menos um desses valores for NULL.
  • false caso contrário.

Observações

  • isearch função é a variante insensível a maiúsculas e minúsculas de search com comportamento de outra forma idêntico.
  • Para um STRUCT argumento, a função pesquisa todos os campos folha pesquisáveis acessíveis a partir do struct de nível superior, independentemente da profundidade de aninhamento. A mesma expansão aplica-se recursivamente a STRUCT corpos dentro VARIANT de e ARRAY valores.
  • No 'substring' modo, VARIANT as teclas e os valores escalares não relacionados com a cadeia dentro de a VARIANT não são correspondidos. Usa 'word' o modo ou extrai campos individuais para pesquisar nesses.

Condições de erro comuns

Examples

-- Basic examples.
> SELECT search(column, 'needle', mode => 'substring') FROM VALUES ('Needle') AS table(column);
 false

> SELECT search(column, 'quick fox', mode => 'substring') FROM VALUES ('quick brown fox') AS table(column);
 false

> SELECT search(column, lower('NEEDLE')) FROM VALUES ('needle') AS table(column);
 true

> SELECT search(column, 'quick fox', mode => 'word') FROM VALUES ('quick brown fox') AS table(column);
 true

> SELECT search(column, 'qui fox', mode => 'word') FROM VALUES ('quick fox') AS table(column);
 false

-- Automatic expansion of STRUCT columns to their searchable leaf fields.
> CREATE TABLE test_table (
    usage_stats STRUCT<digits: INT>,
    customer_info STRUCT<
      contact: STRUCT<json_field: VARIANT>,
      name: STRING>)
  USING DELTA;

> SELECT * FROM test_table WHERE search(usage_stats.digits, 'needle');
 [DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE]

> SELECT * FROM test_table WHERE search(customer_info, 'needle');
-- Equivalent to:
> SELECT * FROM test_table
  WHERE search(customer_info.contact.json_field, customer_info.name, 'needle');

> SELECT * FROM test_table WHERE search(customer_info.contact, 'needle');
-- Equivalent to:
> SELECT * FROM test_table
  WHERE search(customer_info.contact.json_field, 'needle');

-- VARIANT behavior: substring mode does not match keys or non-string scalar values.
> CREATE TABLE test_table AS
  SELECT parse_json('{
    "role": "user",
    "id": 101,
    "preferences": {"theme": "dark", "language": "en"}
  }') AS column;

> SELECT search(column, 'user', mode => 'substring') FROM test_table;
 true

> SELECT search(column, 'preferences', mode => 'substring') FROM test_table;
 false

> SELECT search(column, '101', mode => 'substring') FROM test_table;
 false

-- NULL behavior.
> SELECT search(NULL, 'needle', mode => 'substring');
 NULL

> SELECT search(CAST(NULL AS STRING), 'needle', mode => 'substring');
 NULL

> SELECT search('needle in haystack', NULL, mode => 'substring');
 [SEARCH_REQUIRES_STRING_LITERALS_ARGUMENTS]