search 연산자

여러 테이블 및 열에서 텍스트 패턴을 검색합니다.

참고

검색하려는 특정 테이블 및 열을 알고 있는 경우 공용 구조체위치 연산자를 사용하는 것이 더 성능이 좋습니다. search 많은 수의 테이블과 열에서 검색할 때 연산자가 느려질 수 있습니다.

Syntax

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

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 형식 필수 설명
T string 테이블 이름, 공용 구조체 연산자 또는 테이블 형식 쿼리 결과와 같이 검색할 테이블 형식 데이터 원본입니다. TableSources와 함께 표시할 수 없습니다.
CaseSensitivity string 대/소문자 구분과 관련하여 와 같은 has모든 string 스칼라 연산자의 동작을 제어하는 플래그입니다. 유효한 값은 , , case_sensitivecase_insensitive입니다default. 기본 동작은 대/소문자를 구분하지 않으므로 및 옵션은 defaultcase_insensitive 동의어입니다.
TableSources string 검색에 참여할 "와일드카드" 테이블 이름의 쉼표로 구분된 목록입니다. 목록에는 공용 구조체 연산자 목록과 동일한 구문이 있습니다. TabularSource와 함께 표시할 수 없습니다.
SearchPredicate string ✔️ 입력의 모든 레코드에 대해 평가할 부울 식입니다. 가 반환 true되면 레코드가 출력됩니다. 검색 조건자 구문을 참조하세요.

검색 조건자 구문

SearchPredicate를 사용하면 테이블의 모든 열에서 특정 용어를 검색할 수 있습니다. 검색 용어에 적용할 연산자는 다음 표와 같이 용어의 와일드카드 별표(*)의 존재 및 배치에 따라 달라집니다.

리터럴 연산자
billg has
*billg hassuffix
billg* hasprefix
*billg* contains
bi*lg matches regex

검색을 특정 열로 제한하거나, 용어 일치 대신 정확한 일치 항목을 찾거나, 정규식을 기준으로 검색할 수도 있습니다. 이러한 각 사례에 대한 구문은 다음 표에 나와 있습니다.

Syntax 설명
Columnname:StringLiteral 이 구문을 사용하여 검색을 특정 열로 제한할 수 있습니다. 기본 동작은 모든 열을 검색하는 것입니다.
Columnname==StringLiteral 이 구문을 사용하여 문자열 값에 대한 열의 정확한 일치 항목을 검색할 수 있습니다. 기본 동작은 용어 일치를 찾는 것입니다.
matches regexStringLiteral 이 구문은 StringLiteral 이 정규식 패턴인 정규식 일치를 나타냅니다.

부울 식을 사용하여 조건을 결합하고 더 복잡한 검색을 만듭니다. 예를 들어 는 "error" and x==123 열에 용어 error 가 있고 열의 값 123 이 있는 레코드를 검색합니다 x .

참고

TabularSourceTableSources를 모두 생략하면 검색은 scope 데이터베이스의 모든 무제한 테이블 및 뷰를 통해 전달됩니다.

검색 조건자 구문 예제

# Syntax 의미(해당 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=: 출력에는 항상 값이 각 레코드가 검색된 테이블 이름인 형식 string 의 열$table(또는 원본이 테이블이 아니라 복합 식인 경우 시스템 생성 이름)이 포함됩니다.
  2. project=, project-smart: 출력 스키마는 출력 스키마와 project-smart 동일합니다.

예제

scope 데이터베이스의 모든 무제한 테이블 및 뷰에서 용어를 검색합니다.

search "Green"

출력에는 , ProductsSalesTable 테이블의 레코드가 Customers포함됩니다. 레코드는 Customers 성 "녹색"을 가진 모든 고객을 표시하고 ProductsSalesTable 레코드는 "녹색"의 일부 멘션 있는 제품을 표시합니다.

scope 데이터베이스의 모든 무제한 테이블 및 뷰에서 두 용어와 일치하는 레코드를 검색합니다.

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

특정 테이블 검색

테이블에서만 검색합니다 Customers .

search in (Products) "Green"

scope 데이터베이스의 모든 무제한 테이블 및 뷰에서 대/소문자를 구분하는 용어와 일치하는 레코드를 검색합니다.

search kind=case_sensitive "blue"

특정 열 검색

scope 데이터베이스의 모든 무제한 테이블 및 뷰에서 "FirstName" 및 "LastName" 열에서 용어를 검색합니다.

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

타임스탬프별 검색 제한

해당 용어가 지정된 날짜보다 큰 날짜가 있는 레코드에 표시되는 경우 scope 데이터베이스의 모든 무제한 테이블 및 뷰에서 용어를 검색합니다.

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

성능 팁

# Prefer
1 여러 연속 search 연산자보다 단일 search 연산자를 사용하는 것이 좋습니다. search "billg" and ("steveb" or "satyan") 검색 "billg" | 검색 "steveb" 또는 "satyan"
2 연산자 내에서 필터링하는 것이 좋습니다.search search "billg" and "steveb" search * | 여기서 * 에는 "billg"가 있고 * 에는 "steveb"가 있습니다.