스크립트에서 테이블 쿼리
GlideRecord API의 메서드를 사용하여 테이블에서 모든 기록을 반환하거나, 테이블에서 특정 조건을 만족하는 기록을 반환하거나, 단일 테이블 또는 텍스트 인덱스 그룹의 여러 테이블에서 문자열을 포함하는 기록을 반환할 수 있습니다.
GlideRecord API를 사용하여 테이블을 쿼리합니다. API 참조는 GlideRecord - 범위 지정을 참조하십시오.
테이블에서 모든 기록 반환
var target = new GlideRecord('incident');GlideRecord를 생성하면 인시던트 테이블의 GlideRecord 객체인 대상 변수가 생성됩니다.
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}이 스크립트는 데이터베이스에 query() 를 발행합니다. next()에 대한 각 호출은 처리할 다음 기록을 로드합니다.
쿼리 조건을 충족하는 테이블에서 기록을 반환합니다.
var target = new GlideRecord('incident');
target.addQuery('priority',1);
target.query(); // Issue the query to the database to get relevant records
while (target.next()) {
// add code here to process the incident record
}target.addQuery('priority', 1);가 포함되어 있습니다. 이 줄은 필드가 1인 기록 priority 만 원한다는 것을 나타냅니다. 일반적으로 수행하려는 대부분의 쿼리는 동등 쿼리입니다. 필드가 값과 같은 기록을 찾으려는 쿼리입니다. 따라서 동일 연산자를 제공할 필요가 없습니다. 그러나 필드가 priority 1보다 큰 모든 인시던트를 찾으려고 한다고 가정해 보겠습니다. 이 경우 쿼리에 적용할 연산자를 제공합니다.var target = new GlideRecord('incident') ;
target.addQuery('priority','>',1);
target.query(); // Issue the query to the database to get relevant records
while (target.next()) {
// add code here to process the incident record
}문자열이 포함된 테이블에서 기록을 반환합니다.
" 123TEXTQUERY321" 예약된 이름을 사용하여 테이블의 모든 필드에서 문자열 일치를 검색합니다. 예를 들어, 이 스크립트는 "이메일" 문자열이 포함된 필드 값이 있는 인시던트 테이블의 기록을 반환합니다.
var now_GR = new GlideRecord('incident');
gr.addQuery('123TEXTQUERY321', 'email');
gr.query();
'123TEXTQUERY321'은 addQuery() 메서드의 매개변수에 대해 name 예약된 옵션입니다. 인코딩된 쿼리 문자열에서 이 옵션을 사용할 수 있습니다. 예를 들어 gr.addQuery('123TEXTQUERY321', 'email'); 대신 gr.addEncodedQuery('123TEXTQUERY321=email')를 사용할 수 있습니다.
문자열 검색은 대/소문자를 구분하지 않습니다. 시스템은 이메일, 이메일 또는 이메일을 검색하든 동일한 결과를 반환합니다.
문자열을 포함하는 텍스트 인덱스 그룹의 여러 테이블에서 기록 반환
" 123TEXTINDEXGROUP321" 예약된 이름을 사용하여 텍스트 인덱스 그룹의 테이블에서 문자열을 검색합니다. 이 옵션은 텍스트 인덱스 그룹의 설정을 사용하여 계산된 관련성 점수와 함께 결과를 반환합니다.
var now_GR = new GlideRecord('kb_knowledge');
gr.addQuery('123TEXTQUERY321', 'email');
gr.addQuery('123TEXTINDEXGROUP321', 'portal');
gr.query();검색하려는 "포털" 인덱스 그룹의 각 추가 테이블에 대해 유사한 쿼리를 만든 다음 개별 쿼리의 결과를 병합하여 관련성 점수가 가장 높은 결과를 먼저 표시할 수 있습니다. 이러한 검색 쿼리는 모두 동일한 텍스트 인덱스 그룹 검색 설정을 사용하기 때문에 결과에 대한 관련성 점수는 모두 일관되게 정규화됩니다. gr.addQuery('123TEXTINDEXGROUP321', 'portal') 메서드를 사용하지 않고 동일한 테이블 세트를 검색한 경우 개별 쿼리의 관련성 점수가 다르게 정규화되고 병합된 결과 세트를 정렬하는 데 유용한 기초가 되지 않습니다.
'123TEXTINDEXGROUP321'은 addQuery() 메서드의 매개변수에 대해 name 예약된 옵션입니다. 인코딩된 쿼리 문자열에서 이 옵션을 사용할 수 있습니다. 예를 들어 gr.addQuery('123TEXTINDEXGROUP321', 'portal'); 대신 gr.addEncodedQuery('123TEXTINDEXGROUP321=portal')를 사용할 수 있습니다.
다중 테이블 문자열 검색은 대/소문자를 구분하지 않습니다. 시스템은 이메일, 이메일 또는 이메일을 검색하든 동일한 결과를 반환합니다.
사용 가능한 JavaScript 연산자
addQuery() 요청 내에서 사용할 수 있는 연산자에 대해 설명합니다.
| 필드 | 정의 | addQuery |
|---|---|---|
| = | 필드는 제공된 값과 같아야 합니다. | addQuery('우선순위', '=', 1); |
| > | 필드는 제공된 값보다 커야 합니다. | addQuery('우선순위', '>', 1); |
| < | 필드는 제공된 값보다 작아야 합니다. | addQuery('우선순위', '<', 3); |
| >= | 필드는 제공된 값보다 크거나 같아야 합니다. | addQuery('우선순위', '>=', 1); |
| <= | 필드는 제공된 값보다 작거나 같아야 합니다. | addQuery('우선순위', '<=', 3); |
| != | 필드는 제공된 값과 같을 수 없습니다. | addQuery('우선순위', '!=', 1); |
| 시작 | 필드는 제공된 값으로 시작해야 합니다. 오른쪽에 표시된 예는 short_description 필드가 오류 텍스트로 시작하는 모든 기록을 반환합니다. | addQuery('short_description', 'STARTSWITH', '오류'); |
| 포함 | 필드에는 텍스트 어딘가에 제공된 값이 포함되어야 합니다. 오른쪽에 표시된 예는 short_description 필드에 필드의 아무 곳에나 오류가 포함되어 있는 모든 기록을 반환합니다. 주: LIKE 작업은 지원되지 않습니다. 관리자는 쿼리에서 INTAINS를 사용해야 합니다. |
addQuery('short_description', 'CONTAINS', '오류'); |
| 안에 | 쉼표를 허용하는 값의 맵을 가져오고 다른 요구 사항을 충족하는 기록 컬렉션을 수집합니다. select * <table> from where short_description IN ('Error', 'Success', 'Failure')으로 동작하며, 이는 Select * from <table> where short_description='Error'와 동일합니다. 예를 들어, 특정 활동에 속하는 모든 변수 값을 쿼리하려면 절을 IN 사용하고 해당 sys_ids 맵 또는 쉼표로 구분된 목록에 저장합니다. 그런 다음 변수 값 테이블을 쿼리하고 이 sys_ids 목록을 제공합니다. |
addQuery('short_description', 'IN', '오류, 성공, 실패'); |
| 끝 | 필드는 제공된 값으로 끝나야 합니다. 오른쪽에 표시된 예는 short_description 필드가 오류 텍스트로 끝나는 모든 기록을 반환합니다. | addQuery('short_description', 'ENDSWITH', '오류'); |
| 포함하지 않음 | 필드의 패턴과 일치하지 않는 기록을 선택합니다. 이 연산자는 빈 필드를 검색하지 않습니다. 빈 값의 경우 "비어 있음" 또는 "비어 있지 않음" 연산자를 사용합니다. 오른쪽에 표시된 예는 short_description 필드에 "오류"라는 단어가 없는 모든 기록을 반환합니다. | addQuery('short_description', 'DOES NOT CONTAIN', 'ERROR'); |
| 다음에 없음 | 쉼표를 허용하는 값의 맵을 가져오고 다른 요구 사항을 충족하는 기록 컬렉션을 수집합니다. 다음과 같이 동작합니다. short_description NOT IN("오류")인 위치에서 *를 선택합니다<table>. |
addQuery('short_description', 'NOT IN', 'Error,Success,Failure'); |
| 인스턴스 | 확장 테이블에 대해 지정된 "클래스"의 기록만 검색하는 특수 연산자입니다. 오른쪽의 코드 예제에서는 컴퓨터로 분류되는 모든 구성 항목을 검색하는 방법을 보여 줍니다. | addQuery('sys_class_name', 'INSTANCEOF', 'cmdb_ci_computer'); |
필터 및 쿼리에 사용할 수 있는 연산자에 대한 자세한 내용은 다음 문서를 참조하십시오 Operators available for filters and queries.
var target = new GlideRecord('incident');
target.addNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}var target = new GlideRecord('incident');
target.addNotNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}GlideRecord API 및 사용 가능한 메서드에 대한 자세한 내용은 GlideRecord 문서를 참조하십시오.
GlideRecord 쿼리 예시
이 예는 다양한 GlideRecord 쿼리를 수행하는 방법을 보여줍니다.
쿼리
var rec = new GlideRecord('incident');
rec.query();
while(rec.next()) {
gs.print(rec.number + ' exists'); }
업데이트
var rec = new GlideRecord('incident');
rec.addQuery('active',true);
rec.query();
while(rec.next()) {
rec.active = false;
gs.print('Active incident ' + rec.number = ' closed');
rec.update(); }
삽입
var rec = new GlideRecord('incident');
rec.initialize();
rec.short_description = 'Network problem';
rec.caller_id.setDisplayValue('Joe Employee');
rec.insert();
삭제
var rec = new GlideRecord('incident');
rec.addQuery('active',false);
rec.query();
while(rec.next()) {
gs.print('Inactive incident ' + rec.number + ' deleted');
rec.deleteRecord(); }
서비스 카탈로그 테이블 쿼리
var now_GR = new GlideRecord('sc_item_option_mtom');
gr.addQuery('sc_item_option.item_option_new.name','item_name');
gr.addQuery('sc_item_option.value','item_value');
gr.query();
while(gr.next()) {
gs.addInfoMessage(gr.request_item.number); }자세한 내용은 GlideRecord 문서를 참조하십시오.