Udostępnij za pośrednictwem


operator wyszukiwania

Wyszukuje wzorzec tekstu w wielu tabelach i kolumnach.

Uwaga

Jeśli znasz konkretne tabele i kolumny, które chcesz przeszukiwać, bardziej wydajne jest użycie unii i lokalizacji operatorów. Operator search może być powolny podczas wyszukiwania dużej liczby tabel i kolumn.

Składnia

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

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
T string Tabelaryczne źródło danych, które ma być przeszukiwane, takie jak nazwa tabeli, operator unii lub wyniki zapytania tabelarycznego. Nie można wyświetlić razem z usługą TableSources.
Wielkość liter string Flaga, która kontroluje zachowanie wszystkich string operatorów skalarnych, takich jak has, w odniesieniu do poufności wielkości liter. Prawidłowe wartości to default, , case_sensitivecase_insensitive. Opcje default i case_insensitive są synonimami, ponieważ zachowanie domyślne jest bez uwzględniania wielkości liter.
TableSources string Rozdzielona przecinkami lista "wieloznacznych" nazw tabel do udziału w wyszukiwaniu. Lista ma taką samą składnię jak lista operatora unii. Nie można wyświetlić razem z tabelarycznym źródłem.
SearchPredicate string ✔️ Wyrażenie logiczne, które ma być oceniane dla każdego rekordu w danych wejściowych. Jeśli zwraca truewartość , rekord jest zwracany. Zobacz Składnia predykatu wyszukiwania.

Składnia predykatu wyszukiwania

Funkcja SearchPredicate umożliwia wyszukiwanie określonych terminów we wszystkich kolumnach tabeli. Operator, który zostanie zastosowany do terminu wyszukiwania, zależy od obecności i umieszczania gwiazdki wieloznacznych (*) w terminie, jak pokazano w poniższej tabeli.

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

Możesz również ograniczyć wyszukiwanie do określonej kolumny, wyszukać dokładne dopasowanie zamiast dopasowania terminu lub wyszukać według wyrażenia regularnego. Składnia dla każdego z tych przypadków jest wyświetlana w poniższej tabeli.

Składnia Wyjaśnienie
Nazwakolumny:StringLiteral Ta składnia może służyć do ograniczenia wyszukiwania do określonej kolumny. Domyślne zachowanie polega na wyszukiwaniu wszystkich kolumn.
Nazwakolumny==StringLiteral Ta składnia może służyć do wyszukiwania dokładnych dopasowań kolumny względem wartości ciągu. Domyślne zachowanie polega na wyszukaniu dopasowania terminu.
Ciąg kolumnowyLiteral matches regex Ta składnia wskazuje dopasowanie wyrażenia regularnego, w którym StringLiteral jest wzorcem wyrażeń regularnych.

Użyj wyrażeń logicznych, aby połączyć warunki i tworzyć bardziej złożone wyszukiwania. Na przykład "error" and x==123 spowoduje to wyszukanie rekordów, które mają termin error w dowolnych kolumnach i wartość 123 w kolumnie x .

Uwaga

Jeśli pominięto obie tabele TabularSource i TableSources , wyszukiwanie jest przenoszone na wszystkie nieograniczone tabele i widoki bazy danych w zakresie.

Przykłady składni predykatu wyszukiwania

# Składnia Znaczenie (równoważne where) Komentarze
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" union T1,T2,A* | gdzie * ma wartość "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 W przypadku wszystkich porównań ciągów uwzględniana jest wielkość liter
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)

Uwagi

W przeciwieństwie do operatora find, operatorsearch nie obsługuje następujących elementów:

  1. withsource=: Dane wyjściowe będą zawsze zawierać kolumnę o nazwie $table typu string , której wartością jest nazwa tabeli, z której pobrano każdy rekord (lub nazwa wygenerowana przez system, jeśli źródło nie jest tabelą, ale wyrażeniem złożonym).
  2. project=, project-smart: schemat wyjściowy jest odpowiednikiem project-smart schematu wyjściowego.

Przykłady

Wyszukaj termin dla wszystkich nieograniczonych tabel i widoków bazy danych w zakresie.

search "Green"

Dane wyjściowe zawierają rekordy z Customerstabel , Productsi SalesTable . Rekordy Customers pokazują wszystkich klientów z nazwiskiem "Green", a Products rekordy i SalesTable pokazują produkty z wzmianką o "Green".

Wyszukaj rekordy pasujące do obu terminów dla wszystkich nieograniczonych tabel i widoków bazy danych w zakresie.

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

Wyszukiwanie określonej tabeli

Wyszukaj tylko w Customers tabeli.

search in (Products) "Green"

Wyszukaj rekordy pasujące do obu terminów z uwzględnieniem wielkości liter we wszystkich nieograniczonych tabelach i widokach bazy danych w zakresie.

search kind=case_sensitive "blue"

Wyszukiwanie określonych kolumn

Wyszukaj termin w kolumnach "FirstName" i "LastName" dla wszystkich nieograniczonych tabel i widoków bazy danych w zakresie.

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

Ogranicz wyszukiwanie według znacznika czasu

Wyszukaj termin dla wszystkich nieograniczonych tabel i widoków bazy danych w zakresie, jeśli termin pojawia się w rekordzie z datą większą niż dana data.

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

Wskazówki dotyczące wydajności

# Napiwek Woleć Ponad
1 Preferuj używanie jednego search operatora w kilku kolejnych search operatorach search "billg" and ("steveb" or "satyan") wyszukiwanie "billg" | wyszukiwanie "steveb" lub "satyan"
2 Preferuj search filtrowanie wewnątrz operatora search "billg" and "steveb" wyszukiwanie * | gdzie * ma "billg" i * ma "steveb"