Operátor search

Prohledá textový vzor ve více tabulkách a sloupcích.

Poznámka

Pokud znáte konkrétní tabulky a sloupce, které chcete prohledávat, je výkonnější použít operátory union a where . Operátor search může být pomalý při vyhledávání ve velkém počtu tabulek a sloupců.

Syntax

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

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
T string Tabulkový zdroj dat, který se má prohledávat, například název tabulky, operátor sjednocení nebo výsledky tabulkového dotazu. Nelze zobrazit společně s TableSources.
Rozlišování velkých a malých písmen string Příznak, který řídí chování všech string skalárních operátorů, například has, s ohledem na rozlišování velkých a malých písmen. Platné hodnoty jsou default, case_insensitive, . case_sensitive Možnosti default a case_insensitive jsou synonymní, protože výchozí chování nerozlišuje malá a velká písmena.
Zdroje tabulek string Seznam názvů tabulek oddělených čárkami, které se mají účastnit hledání. Seznam má stejnou syntaxi jako seznam operátoru sjednocení. Nelze zobrazit společně s TabularSource.
HledatPredicate string ✔️ Logický výraz, který se má vyhodnotit pro každý záznam ve vstupu. Pokud vrátí true, výstup záznamu se zobrazí. Viz Syntaxe predikátu hledání.

Syntaxe predikátu hledání

SearchPredicate umožňuje vyhledat konkrétní termíny ve všech sloupcích tabulky. Operátor, který se použije u hledaného termínu, závisí na přítomnosti a umístění zástupné hvězdičky (*) v termínu, jak je znázorněno v následující tabulce.

Literál Operátor
billg has
*billg hassuffix
billg* hasprefix
*billg* contains
bi*lg matches regex

Můžete také omezit hledání na konkrétní sloupec, hledat přesnou shodu místo shody termínu nebo hledat podle regulárního výrazu. Syntaxe pro každý z těchto případů je uvedena v následující tabulce.

Syntax Vysvětlení
Columnname:StringLiteral Tuto syntaxi lze použít k omezení vyhledávání na konkrétní sloupec. Výchozím chováním je prohledání všech sloupců.
Columnname==StringLiteral Tuto syntaxi lze použít k vyhledání přesných shod sloupce s řetězcovou hodnotou. Výchozím chováním je vyhledání shody termínu.
Sloupecmatches regexStringLiteral Tato syntaxe označuje shodu regulárních výrazů, ve kterých je StringLiteral vzor regulárního výrazu.

Pomocí logických výrazů můžete kombinovat podmínky a vytvářet složitější hledání. Výsledkem by bylo například "error" and x==123 hledání záznamů, které mají termín error v libovolném sloupci a hodnotu 123 ve sloupci x .

Poznámka

Pokud jsou vynechány tabulkové zdroje i zdroje tabulek , bude hledání přeneseno do všech neomezených tabulek a zobrazení databáze v oboru.

Příklady syntaxe predikátu vyhledávání

# Syntax Význam (ekvivalent where) Komentáře
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" sjednocení T1,T2,A* | kde * má "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 U všech porovnání řetězců se rozlišují malá a velká písmena.
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)

Poznámky

Na rozdíl od operátorusearch find operátor nepodporuje následující:

  1. withsource=: Výstup bude vždy obsahovat sloupec s názvem $table typu string , jehož hodnotou je název tabulky, ze které byl každý záznam načten (nebo nějaký název vygenerovaný systémem, pokud zdrojem není tabulka, ale složený výraz).
  2. project=, project-smart: Výstupní schéma je ekvivalentní výstupnímu project-smart schématu.

Příklady

Vyhledejte termín ve všech neomezených tabulkách a zobrazeních databáze v oboru.

search "Green"

Výstup obsahuje záznamy z Customerstabulek , Productsa SalesTable . Záznamy Customers zobrazují všechny zákazníky s příjmením "Green" a Products záznamy a SalesTable zobrazují produkty s určitou zmínkou "Green".

Vyhledejte záznamy, které odpovídají oběma termínům ve všech neomezených tabulkách a zobrazení databáze v oboru.

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

Hledání v konkrétní tabulce

Hledat jenom v tabulce Customers .

search in (Products) "Green"

Ve všech neomezených tabulkách a zobrazeních databáze v oboru vyhledejte záznamy, které odpovídají termínům rozlišujících malá a velká písmena.

search kind=case_sensitive "blue"

Hledat konkrétní sloupce

Vyhledejte výraz ve sloupcích FirstName a LastName ve všech neomezených tabulkách a zobrazeních databáze v oboru.

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

Omezit vyhledávání podle časového razítka

Vyhledejte termín ve všech neomezených tabulkách a zobrazeních databáze v oboru, pokud se termín zobrazuje v záznamu s datem větším než dané datum.

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

Tipy pro zvýšení výkonu

# Tip Dávají přednost Přes
1 Upřednostněte použití jednoho search operátoru před několika po sobě jdoucími search operátory. search "billg" and ("steveb" or "satyan") hledat "billg" | hledat "steveb" nebo "satyan"
2 Raději filtrujte uvnitř operátoru.search search "billg" and "steveb" hledat * | kde * má "billg" a * má "steveb"