Operador search

Busca un patrón de texto en varias tablas y columnas.

Nota

Si conoce las tablas y columnas específicas que desea buscar, es más eficaz usar la unión y los operadores donde . El search operador puede ser lento al buscar en un gran número de tablas y columnas.

Syntax

[T|] search [kind=CaseSensitivity ] [in(TableSources)] SearchPredicate

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
T string Origen de datos tabular en el que se va a buscar, como un nombre de tabla, un operador de unión o los resultados de una consulta tabular. No se puede mostrar junto con TableSources.
CaseSensitivity string Marca que controla el comportamiento de todos los string operadores escalares, como has, con respecto a la distinción entre mayúsculas y minúsculas. Los valores válidos son default, case_insensitive, case_sensitive. Las opciones default y case_insensitive son sinónimos, ya que el comportamiento predeterminado no distingue mayúsculas de minúsculas.
TableSources string Lista separada por comas de nombres de tabla "con caracteres comodín" para participar en la búsqueda. La lista tiene la misma sintaxis que la lista del operador union. No puede aparecer junto con TabularSource.
SearchPredicate string ✔️ Expresión booleana que se va a evaluar para cada registro de la entrada. Si devuelve true, se genera el registro. Consulte Sintaxis de predicado de búsqueda.

Sintaxis de predicado de búsqueda

SearchPredicate permite buscar términos específicos en todas las columnas de una tabla. El operador que se aplicará a un término de búsqueda depende de la presencia y colocación de un asterisco comodín (*) en el término , como se muestra en la tabla siguiente.

Literal Operador
billg has
*billg hassuffix
billg* hasprefix
*billg* contains
bi*lg matches regex

También puede restringir la búsqueda a una columna específica, buscar una coincidencia exacta en lugar de una coincidencia de términos o buscar por expresión regular. La sintaxis de cada uno de estos casos se muestra en la tabla siguiente.

Syntax Explicación
Columnname:StringLiteral Esta sintaxis se puede usar para restringir la búsqueda a una columna específica. El comportamiento predeterminado es buscar todas las columnas.
Columnname==StringLiteral Esta sintaxis se puede usar para buscar coincidencias exactas de una columna con un valor de cadena. El comportamiento predeterminado es buscar una coincidencia de términos.
Columnamatches regexStringLiteral Esta sintaxis indica la coincidencia de expresiones regulares, en la que StringLiteral es el patrón regex.

Use expresiones booleanas para combinar condiciones y crear búsquedas más complejas. Por ejemplo, "error" and x==123 daría como resultado una búsqueda de registros que tienen el término error en cualquier columna y el valor 123 de la x columna.

Nota

Si se omiten TabularSource y TableSources , la búsqueda se lleva a cabo en todas las tablas y vistas sin restricciones de la base de datos en el ámbito.

Ejemplos de sintaxis de predicado de búsqueda

# Syntax Significado (equivalente where) Comentarios
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" union T1,T2,A* | donde * tiene "err"
3 search col:"err" where col has "err"
4 search col=="err" where col=="err"
5 search "err*" where * hasprefix "err"
6 search "*err" where * hassuffix "err"
7 search "*err*" where * contains "err"
8 search "Lab*PC" where * matches regex @"\bLab.*PC\b"
9 search * where 0==0
10 search col matches regex "..." where col matches regex "..."
11 search kind=case_sensitive Todas las comparaciones de cadenas distinguen mayúsculas de minúsculas.
12 search "abc" and ("def" or "hij") where * has "abc" and (* has "def" or * has hij")
13 search "err" or (A>a and A<b) where * has "err" or (A>a and A<b)

Comentarios

A diferencia del operador find, el search operador no admite lo siguiente:

  1. withsource=: la salida siempre incluirá una columna denominada $table de tipo string cuyo valor es el nombre de tabla del que se recuperó cada registro (o algún nombre generado por el sistema si el origen no es una tabla, sino una expresión compuesta).
  2. project=, project-smart: el esquema de salida es equivalente al project-smart esquema de salida.

Ejemplos

Busque un término en todas las tablas y vistas sin restricciones de la base de datos en el ámbito.

search "Green"

La salida contiene registros de las Customerstablas , Productsy SalesTable . Los Customers registros muestran todos los clientes con el apellido "Green" y los Products registros y SalesTable muestran productos con alguna mención de "Green".

Busque registros que coincidan con ambos términos en todas las tablas y vistas sin restricciones de la base de datos en el ámbito.

search "Green" and ("Deluxe" or "Proseware")

Buscar en una tabla específica

Busque solo en la Customers tabla.

search in (Products) "Green"

Busque registros que coincidan con ambos términos que distinguen mayúsculas de minúsculas en todas las tablas y vistas sin restricciones de la base de datos en el ámbito.

search kind=case_sensitive "blue"

Buscar columnas específicas

Busque un término en las columnas "FirstName" y "LastName" en todas las tablas y vistas sin restricciones de la base de datos en el ámbito.

search FirstName:"Aaron" or LastName:"Hughes"

Limitar la búsqueda por marca de tiempo

Busque un término en todas las tablas y vistas sin restricciones de la base de datos en el ámbito si el término aparece en un registro con una fecha mayor que la fecha especificada.

search "Hughes" and DateKey > datetime('2009-01-01')

Sugerencias para mejorar el rendimiento

# Sugerencia Prefer Over
1 Preferir usar un único search operador en varios operadores consecutivos search search "billg" and ("steveb" or "satyan") buscar "billg" | buscar "steveb" o "satyan"
2 Se prefiere filtrar dentro del search operador search "billg" and "steveb" search * | donde * tiene "billg" y * tiene "steveb"