Partager via


opérateur search

Recherche un modèle de texte dans plusieurs tables et colonnes.

Remarque

Si vous connaissez les tables et colonnes spécifiques que vous souhaitez rechercher, il est plus performant d’utiliser l’union et l’emplacement les opérateurs. L’opérateur search peut être lent lors de la recherche sur un grand nombre de tables et de colonnes.

Syntaxe

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

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
T string Source de données tabulaire à rechercher, telle qu’un nom de table, un opérateur d’union ou les résultats d’une requête tabulaire. Impossible d’apparaître avec TableSources.
CaseSensitivity string Indicateur qui contrôle le comportement de tous les string opérateurs scalaires, tels que has, en ce qui concerne la sensibilité de la casse. Les valeurs valides sont default, case_insensitive, case_sensitive. Les options default et case_insensitive sont synonymes, car le comportement par défaut ne respecte pas la casse.
TableSources string Liste séparée par des virgules des noms de tables « génériques » à prendre part à la recherche. La liste a la même syntaxe que la liste de l’opérateur union. Impossible d’apparaître avec TabularSource.
SearchPredicate string ✔️ Expression booléenne à évaluer pour chaque enregistrement de l’entrée. Si elle retourne true, l’enregistrement est généré. Consultez la syntaxe de prédicat de recherche.

Syntaxe de prédicat de recherche

SearchPredicate vous permet de rechercher des termes spécifiques dans toutes les colonnes d’une table. L’opérateur qui sera appliqué à un terme de recherche dépend de la présence et du placement d’un astérisque générique (*) dans le terme, comme indiqué dans le tableau suivant.

Littéral Opérateur
billg has
*billg hassuffix
billg* hasprefix
*billg* contains
bi*lg matches regex

Vous pouvez également restreindre la recherche à une colonne spécifique, rechercher une correspondance exacte au lieu d’une correspondance de terme ou rechercher par expression régulière. La syntaxe de chacun de ces cas est indiquée dans le tableau suivant.

Syntaxe Explication
ColumnName:StringLiteral Cette syntaxe peut être utilisée pour restreindre la recherche à une colonne spécifique. Le comportement par défaut consiste à rechercher toutes les colonnes.
ColumnName==StringLiteral Cette syntaxe peut être utilisée pour rechercher des correspondances exactes d’une colonne par rapport à une valeur de chaîne. Le comportement par défaut consiste à rechercher une correspondance de termes.
StringLiteral de colonne matches regex Cette syntaxe indique la correspondance d’expression régulière, dans laquelle StringLiteral est le modèle regex.

Utilisez des expressions booléennes pour combiner des conditions et créer des recherches plus complexes. Par exemple, "error" and x==123 une recherche d’enregistrements ayant le terme error dans toutes les colonnes et la valeur 123 de la x colonne sont recherchés.

Remarque

Si tabularSource et TableSources sont omis, la recherche est effectuée sur toutes les tables et vues illimitées de la base de données dans l’étendue.

Exemples de syntaxe de prédicat de recherche

# Syntaxe Signification (équivalent where) Commentaires
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" union T1,T2,A* | où * a « 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 Toutes les comparaisons de chaînes respectent la casse
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)

Notes

Contrairement à l’opérateur find, l’opérateursearch ne prend pas en charge les éléments suivants :

  1. withsource=: la sortie inclut toujours une colonne appelée $table de type string dont la valeur est le nom de table à partir duquel chaque enregistrement a été récupéré (ou un nom généré par le système si la source n’est pas une table, mais une expression composite).
  2. project=, : project-smartle schéma de sortie est équivalent au schéma de project-smart sortie.

Exemples

Recherchez un terme sur toutes les tables et vues illimitées de la base de données dans l’étendue.

search "Green"

La sortie contient des enregistrements à partir des tables et SalesTable des CustomersProductstableaux. Les Customers enregistrements affichent tous les clients portant le nom « Vert », et les Products SalesTable enregistrements affichent des produits avec une mention « Vert ».

Recherchez des enregistrements qui correspondent aux deux termes sur toutes les tables et vues illimitées de la base de données dans l’étendue.

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

Rechercher une table spécifique

Recherchez uniquement dans la Customers table.

search in (Products) "Green"

Recherchez des enregistrements qui correspondent à des termes respectant la casse sur toutes les tables et vues illimitées de la base de données dans l’étendue.

search kind=case_sensitive "blue"

Rechercher des colonnes spécifiques

Recherchez un terme dans les colonnes « FirstName » et « LastName » sur toutes les tables et vues illimitées de la base de données dans l’étendue.

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

Limiter la recherche par horodatage

Recherchez un terme sur toutes les tables et vues illimitées de la base de données dans l’étendue si le terme apparaît dans un enregistrement dont la date est supérieure à la date donnée.

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

Conseils relatifs aux performances

# Conseil Préférer Over
1 Préférer utiliser un seul search opérateur sur plusieurs opérateurs consécutifs search search "billg" and ("steveb" or "satyan") search « billg » | rechercher « steveb » ou « satyan »
2 Préférer filtrer à l’intérieur de l’opérateur search search "billg" and "steveb" search * | où * a « billg » et * a « steveb »