Оператор search

Выполняет поиск по шаблону текста в нескольких таблицах и столбцах.

Примечание

Если вы знаете конкретные таблицы и столбцы, которые требуется выполнить поиск, более производительно использовать операторы union и where . Оператор search может выполняться медленно при поиске по большому количеству таблиц и столбцов.

Синтаксис

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

Дополнительные сведения о соглашениях о синтаксисе.

Параметры

Имя Тип Обязательно Описание
T string Табличный источник данных для поиска, например имя таблицы, оператор объединения или результаты табличного запроса. Не может отображаться вместе с TableSources.
CaseSensitivity string Флаг, управляющий поведением всех string скалярных операторов, таких как has, в отношении чувствительности к регистру. Допустимые значения: default, case_insensitive, case_sensitive. Параметры default и case_insensitive являются синонимами, так как поведение по умолчанию не учитывает регистр.
TableSources string Разделенный запятыми список имен таблиц с подстановочными знаками для участия в поиске. Этот список имеет тот же синтаксис, что и список оператора union. Не может отображаться вместе с TabularSource.
SearchPredicate string ✔️ Логическое выражение, вычисляемое для каждой записи во входных данных. Если возвращается trueзначение , запись выводится. См. раздел Синтаксис предиката поиска.

Синтаксис предиката поиска

SearchPredicate позволяет искать определенные термины во всех столбцах таблицы. Оператор, который будет применяться к условию поиска, зависит от наличия и размещения подстановочной звездочки (*) в термине, как показано в следующей таблице.

Литерал Оператор
billg has
*billg hassuffix
billg* hasprefix
*billg* contains
bi*lg matches regex

Вы также можете ограничить поиск определенным столбцом, найти точное совпадение вместо совпадения с термином или выполнить поиск по регулярному выражению. Синтаксис для каждого из этих случаев показан в следующей таблице.

Синтаксис Описание
Имя столбца:StringLiteral Этот синтаксис можно использовать для ограничения поиска определенным столбцом. По умолчанию выполняется поиск по всем столбцам.
Имя столбца==StringLiteral Этот синтаксис можно использовать для поиска точных совпадений столбца со строковым значением. Поведение по умолчанию — поиск совпадения терминов.
Столбцаmatches regexStringLiteral Этот синтаксис указывает на сопоставление регулярных выражений, в котором StringLiteral является шаблоном регулярного выражения.

Используйте логические выражения для объединения условий и создания более сложных поисковых запросов. Например, "error" and x==123 приведет к поиску записей с термином error в любых столбцах и значением 123 в столбце x .

Примечание

Если значения TabularSource и TableSources опущены, поиск выполняется по всем неограниченным таблицам и представлениям базы данных в область.

Примеры синтаксиса предиката поиска

# Синтаксис Значение (эквивалент )where Комментарии
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" union T1, T2, 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 Во всех сравнениях строк учитывается регистр.
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)

Комментарии

В отличие от оператора find, search оператор не поддерживает следующее:

  1. withsource=: выходные данные всегда будут содержать столбец с именем $table типа string , значением которого является имя таблицы, из которой была получена каждая запись (или некоторое системное имя, если источник не является таблицей, а составным выражением).
  2. project=, project-smart: выходная схема эквивалентна выходной схеме project-smart .

Примеры

Поиск термина для всех неограниченных таблиц и представлений базы данных в область.

search "Green"

Выходные данные содержат записи из Customersтаблиц , Productsи SalesTable . В Customers записях отображаются все клиенты с фамилией "Зеленый", а Products в записях и SalesTable — продукты с некоторыми упоминание "Зеленый".

Поиск записей, соответствующих обоим терминам, по всем неограниченным таблицам и представлениям базы данных в область.

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

Поиск в определенной таблице

Поиск только в Customers таблице.

search in (Products) "Green"

Поиск записей, соответствующих обоим терминам с учетом регистра, по всем неограниченным таблицам и представлениям базы данных в область.

search kind=case_sensitive "blue"

Поиск по определенным столбцам

Выполните поиск термина в столбцах FirstName и LastName во всех таблицах и представлениях базы данных с неограниченным доступом в область.

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

Ограничение поиска по метке времени

Поиск термина для всех неограниченных таблиц и представлений базы данных в область, если термин отображается в записи с датой больше заданной даты.

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

Советы по производительности

# Совет Prefer Over
1 Предпочитать использовать один search оператор вместо нескольких последовательных search операторов search "billg" and ("steveb" or "satyan") search "billg" | поиск "steveb" или "satyan"
2 Предпочитать фильтрацию внутри search оператора search "billg" and "steveb" search * | где * имеет "billg", а * имеет "steveb"