search Función

Se aplica a:check marcado yes Databricks Runtime 19.0 y versiones posteriores

Important

Esta característica se encuentra en su versión beta. Los administradores del área de trabajo pueden controlar el acceso a esta característica desde la página Vistas previas . Consulte Administrar versiones preliminares de Azure Databricks.

Devuelve true si search_pattern se encuentra en cualquiera de los valores de columna de destino proporcionados.

Para obtener información sobre cómo acelerar las search consultas con índices de búsqueda de texto completo, consulte Índices de búsqueda de texto completo en tablas administradas del catálogo de Unity.

Syntax

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

Arguments

  • column: una o varias expresiones de destino que se pueden buscar. Una expresión que se puede buscar tiene uno de estos tipos:

    • STRING con UTF8_BINARY intercalación.
    • VARIANT.
    • STRUCT con al menos un campo que se puede buscar. La estructura se expande automáticamente a sus campos hoja que se pueden buscar en cualquier profundidad de anidamiento.
    • ARRAY de cualquier tipo que se pueda buscar.

    No hay ninguna conversión implícita para los valores de destino que no son de cadena.

  • search_pattern: expresión plegable (constante) STRING con el valor que se va a buscar.

  • mode: argumento con nombre STRING opcional que controla cómo se realizan las coincidencias. Uno de los valores siguientes:

    • 'substring' (valor predeterminado): coincide si search_pattern aparece en cualquier lugar dentro de un valor de destino. Equivalente a la contains función .
    • 'word': coincide con las palabras individuales de con search_pattern un valor de destino, independientemente del orden.

Returns

Un objeto BOOLEAN.

  • true si search_pattern se encuentra en cualquiera de los valores de columna de destino.
  • NULL si search_pattern no se encuentra en ningún valor de columna de destino y al menos uno de esos valores es NULL.
  • De lo contrario, false.

Notas

  • isearch function es la variante sin distinción entre mayúsculas y minúsculas de search con un comportamiento idéntico de lo contrario.
  • Para un STRUCT argumento, la función busca todos los campos hoja que se pueden buscar accesibles desde la estructura de nivel superior, independientemente de la profundidad de anidamiento. La misma expansión se aplica de forma recursiva a STRUCT los campos dentro VARIANT de los valores y ARRAY .
  • En 'substring' el modo, VARIANT las claves y los valores escalares que no son de cadena dentro de no VARIANT coinciden. Use 'word' el modo o extraiga campos individuales para buscarlos.

Condiciones de error comunes

Ejemplos

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