search Função

Aplica-se a:check marked yes Databricks Runtime 19.0 e superior

Important

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

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

Para obter informações sobre como acelerar search consultas com índices de pesquisa de texto completo, consulte índices de pesquisa de texto completo em tabelas gerenciadas do Catálogo do Unity.

Syntax

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

Arguments

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

    • STRING com UTF8_BINARY ordenação.
    • VARIANT.
    • STRUCT com pelo menos um campo pesquisável. O struct é expandido automaticamente para seus campos folha pesquisáveis em qualquer profundidade de aninhamento.
    • ARRAY de qualquer tipo pesquisável.

    Não há nenhuma conversão implícita para valores de destino que não sejam de cadeia de caracteres.

  • search_pattern: uma expressão dobrável (constante) STRING com o valor a ser pesquisado.

  • mode: um argumento nomeado STRING opcional que controla como as correspondências são executadas. Um destes:

    • 'substring' (padrão): corresponde se search_pattern aparece em qualquer lugar dentro de um valor de destino. Equivalente à contains função.
    • 'word': corresponde as palavras individuais em search_pattern relação a um valor de destino, independentemente da ordem.

Returns

Um BOOLEAN.

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

Notes

  • isearch a função é a variante que não diferencia maiúsculas de minúsculas com search comportamento idêntico.
  • Para obter um STRUCT argumento, a função pesquisa cada campo folha pesquisável acessível do struct de nível superior, independentemente da profundidade de aninhamento. A mesma expansão se aplica recursivamente a STRUCT campos dentro VARIANT e ARRAY valores.
  • No 'substring' modo, VARIANT as chaves e os valores escalares que não são de cadeia de caracteres dentro de um VARIANT não são correspondidos. Use o 'word' modo ou extraia campos individuais para pesquisá-los.

Condições de erro comuns

Exemplos

-- 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]