Share via


Operatore search

Cerca un modello di testo in più tabelle e colonne.

Nota

Se si conoscono le tabelle e le colonne specifiche da cercare, è più efficiente usare l'unione e dove gli operatori. L'operatore search può essere lento durante la ricerca in un numero elevato di tabelle e colonne.

Sintassi

[T|] [CaseSensitivity ] [inkind=(TableSources)] searchSearchPredicate

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
T string Origine dati tabulare da cercare, ad esempio un nome di tabella, un operatore di unione o i risultati di una query tabulare. Impossibile visualizzare insieme a TableSources.
CaseSensitivity string Flag che controlla il comportamento di tutti gli string operatori scalari, ad esempio has, rispetto alla riservatezza delle maiuscole e minuscole. I valori validi sono default, , case_insensitivecase_sensitive. Le opzioni default e sono sinonimo, poiché il comportamento predefinito è senza distinzione tra maiuscole e case_insensitive minuscole.
TableSources string Elenco delimitato da virgole di nomi di tabella "con caratteri jolly" da partecipare alla ricerca. L'elenco ha la stessa sintassi dell'elenco dell'operatore unione. Impossibile visualizzare insieme a TabularSource.
SearchPredicate string ✔️ Espressione booleana da valutare per ogni record nell'input. Se restituisce true, il record viene restituito. Vedere sintassi del predicato di ricerca.

Sintassi del predicato di ricerca

SearchPredicate consente di cercare termini specifici in tutte le colonne di una tabella. L'operatore che verrà applicato a un termine di ricerca dipende dalla presenza e dalla posizione di un asterisco jolly (*) nel termine, come illustrato nella tabella seguente.

Literal (Valore letterale) Operatore
billg has
*billg hassuffix
billg* hasprefix
*billg* contains
bi*lg matches regex

È anche possibile limitare la ricerca a una colonna specifica, cercare una corrispondenza esatta anziché una corrispondenza termine o cercare in base a un'espressione regolare. La sintassi per ognuno di questi casi è illustrata nella tabella seguente.

Sintassi Spiegazione
Columnname:Stringliteral Questa sintassi può essere usata per limitare la ricerca a una colonna specifica. Il comportamento predefinito consiste nel cercare tutte le colonne.
Columnname==Stringliteral Questa sintassi può essere usata per cercare corrispondenze esatte di una colonna rispetto a un valore stringa. Il comportamento predefinito consiste nel cercare una corrispondenza tra termini.
Colonnamatches regexStringliteral Questa sintassi indica la corrispondenza delle espressioni regolari, in cui StringLiteral è il modello regex.

Usare espressioni booleane per combinare le condizioni e creare ricerche più complesse. Ad esempio, "error" and x==123 verrà eseguita una ricerca di record con il termine error in qualsiasi colonna e il valore 123 nella x colonna.

Nota

Se vengono omessi sia TabularSource che TableSource , la ricerca viene eseguita su tutte le tabelle e le viste non limitate del database nell'ambito.

Esempi di sintassi del predicato di ricerca

# Sintassi Significato (equivalente where) Commenti
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" unione T1,T2,A* | dove * ha "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 Tutti i confronti delle stringhe sono distinzione tra maiuscole e minuscole
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)

Commenti

A differenza dell'operatore find, l'operatoresearch non supporta quanto segue:

  1. withsource=: l'output includerà sempre una colonna denominata $table di tipo string il cui valore è il nome della tabella da cui è stato recuperato ogni record (o un nome generato dal sistema se l'origine non è una tabella ma un'espressione composita).
  2. project=, project-smart: lo schema di output equivale allo project-smart schema di output.

Esempio

Cercare un termine per tutte le tabelle e le visualizzazioni senza restrizioni del database nell'ambito.

search "Green"

L'output Customerscontiene record dalle tabelle , Productse SalesTable . I Customers record mostrano tutti i clienti con il cognome "Verde" e i Products record e SalesTable mostrano i prodotti con una menzione di "Verde".

Cercare i record che corrispondono a entrambi i termini su tutte le tabelle e le viste senza restrizioni del database nell'ambito.

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

Cercare una tabella specifica

Cercare solo nella Customers tabella.

search in (Products) "Green"

Cercare i record che corrispondono a entrambi i termini con distinzione tra maiuscole e minuscole su tutte le tabelle e le visualizzazioni del database nell'ambito.

search kind=case_sensitive "blue"

Cercare colonne specifiche

Cercare un termine nelle colonne "FirstName" e "LastName" su tutte le tabelle e le viste non limitate del database nell'ambito.

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

Limitare la ricerca in base al timestamp

Cercare un termine su tutte le tabelle e le viste non limitate del database nell'ambito se il termine viene visualizzato in un record con una data maggiore della data specificata.

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

Suggerimenti sulle prestazioni

# Suggerimento Prefer Over (Selezione)
1 Preferisce usare un singolo search operatore su più operatori consecutivi search search "billg" and ("steveb" or "satyan") ricerca "billg" | ricerca "steveb" o "satyan"
2 Preferisce filtrare all'interno dell'operatore search search "billg" and "steveb" search * | dove * ha "billg" e * ha "steveb"