GlideDBFunctionBuilder - 범위가 지정됨, 전역
GlideDBFunctionBuilder API는 데이터베이스에서 SQL 작업을 수행하는 함수를 빌드하는 메서드를 제공합니다.
이러한 메소드는 레코드 데이터에 대해 SQL 조작을 수행하기 위해 관계형 데이터베이스 관리 시스템(RDBMS) 기능을 빌드하는 방법을 제공합니다. 이러한 메서드는 범위가 지정된 서버 스크립트와 전역 서버 스크립트 모두에서 사용할 수 있습니다.
- GlideDBFunctionBuilder 생성자 및 관련 메서드를 사용하여 함수를 구성합니다.
- 함수를 빌드한 후에는 GlideRecord 클래스의 addFunction() 메서드를 사용하여 현재 기록에 함수를 적용합니다.
- GlideRecord 클래스의 addQuery() 메서드를 사용하여 쿼리에 함수를 추가합니다.
- getValue() 및 getElement()와 같은 기존 GlideRecord API 메서드를 사용하여 함수의 결과를 검색합니다.
예:
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
dbFunction = functionBuilder.field('short_description'); // column: Name of the table column to search.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column to search
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
}
함수 필드에 대한 자세한 내용은 다음 문서를 참조하십시오 Function field.
범위가 지정된 GlideDBFunctionBuilder - GlideDBFunctionBuilder()
GlideDBFunctionBuilder 객체를 인스턴스화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 안 함 |
var builder = new GlideDBFunctionBuilder();
범위가 지정된 GlideDBFunctionBuilder - andFunc(expr1, expr2, ...)
매개변수로 제공된 모든 식이 true인 경우에만 true를 반환하는 새 AND 식을 시작합니다. 하나 이상의 부울 값 식을 매개 변수로 제공해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 표현식 | 부울 값 GlideFunction 표현식 | 현재 이 기준을 충족하는 글라이드 함수에는 and(),or() 및 compare()가 포함됩니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 결과 GlideFunction 표현식입니다. |
다음 예제에서는 간단한 case 문을 정의하고 작성하는 방법을 보여 줍니다.
var expr = new GlideDBFunctionBuilder()
.andFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
gs.info("Expression: " + expr);
출력:
Expression: glidefunction:and(compare(first_name,'=','John'),compare(active,'=','1'))
범위가 지정된 GlideDBFunctionBuilder - add()
둘 이상의 정수 필드 값을 더합니다.
field(String field) 메서드를 사용하여 작업이 수행되는 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
범위가 지정된 GlideDBFunctionBuilder - build()
GlideDBFunctionBuilder 객체로 정의된 데이터베이스 함수를 빌드합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
gs.info(myAddingFunction);
*** Script: glidefunction:add(order,priority)범위가 지정된 GlideDBFunctionBuilder - 병합()
쉼표로 구분된 필드 수를 입력으로 받고 첫 번째 비어 있지 않은 값을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 논쟁 | 문자열 | 상수 값(문자열, 객체, 부울) 또는 필드를 포함하는 목록입니다. 허용되는 형식: glidefunction:coalesce(<string, string, string, etc.>) 인수는 임의의 수의 매개변수를 가질 수 있지만 하나 이상의 매개변수가 정의되어 있어야 합니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 인수 목록에서 null이 아닌 첫 번째 값입니다. null이 아닌 값이 없으면 null이 반환됩니다. 함수 객체를 만들 때 인수가 제공되지 않으면 "잘못된 함수"가 문자열로 반환됩니다. |
다음 예제 요청은 closed_at, resolved_at 및 sys_updated_on 필드에 따라 null 값을 반환하도록 병합 가이드 함수를 구성하는 방법을 보여줍니다.
var gr = new GlideRecord('incident');
var func = "glidefunction:coalesce(closed_at, resolved_at,sys_updated_on)";
gr.addFunction(func);
gr.query();
while(gr.next())
gs.info(gr.getValue(func));
스크립트는 인시던트 테이블의 각 인시던트 기록에 대해 이 목록의 필드에서 첫 번째 null값이 아닌 값([closed_at, resolved_at, sys_updated_on])을 반환하고 gs.info 와 함께 출력합니다.
2016-12-14 02:46:44
2018-01-09 22:55:16
2018-01-07 22:54:55
2018-01-13 23:02:54
2018-01-09 23:12:02
범위가 지정된 GlideDBFunctionBuilder - compare(exp1, op, exp2)
두 표현식 간의 비교를 수행하는 새 COMPARE 표현식을 시작합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| exp1 | 문자열 | 왼쪽 비교 식입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다. |
| 운영 | 문자열 | 따옴표로 묶인 비교 연산자입니다. 허용되는 값:
|
| exp2 | 문자열 | 오른쪽 비교 식입니다. 상수, 필드에 대한 참조 또는 다른 Glide 함수일 수 있습니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 결과 GlideFunction 표현식입니다. |
다음 예는 compare() 작업을 사용하여 Glidefunction 표현식을 작성하는 방법을 보여줍니다. compare()를 호출한 후, 세 개의 필수 매개 변수 각각을 지정하기 위해 세 번의 추가 호출이 이루어져야 하며, endfun()에 대한 단일 호출로 완료됩니다. 아래에서는 두 개의 별도 compare() 표현식을 만들어 or() 표현식에 매개변수로 제공합니다.
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
출력:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
범위가 지정된 GlideDBFunctionBuilder - concat()
둘 이상의 필드 값을 연결합니다.
field(String field) 메서드를 사용하여 작업이 수행되는 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myConcatFunction = functionBuilder.concat();
myConcatFunction = functionBuilder.field('short_description');
myConcatFunction = functionBuilder.field('caller_id.name');
myConcatFunction = functionBuilder.build();
범위가 지정된 GlideDBFunctionBuilder - 상수(문자열 상수)
함수에서 사용할 상수 값을 정의합니다. dayofweek() 메서드와 함께 사용되는 경우 문자열은 일요일 또는 월요일을 주의 첫 번째 날로 사용할지 여부를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 상수 | 문자열 | 함수에 사용되는 상수 값입니다. dayofweek() 메서드와 함께 사용할 때 값은 주가 일요일에 시작하는지 월요일에 시작하는지 정의합니다.
이 정의를 사용하면 dayofweek() 메서드가 지정된 날짜부터 올바른 요일을 반환할 수 있습니다. 1 또는 2 이외의 값이 제공되면 dayofweek() 메서드는 일요일을 주의 첫 번째 날로 사용합니다. |
| 유형 | 설명 |
|---|---|
| void |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my');
dbFunction = functionBuilder.field('short_description');
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var g = new GlideRecord('incident');
g.addFunction(dbFunction);
g.addQuery("short_description", "CONTAINS", "my");
g.setLimit(20);
g.query();
while(g.next()) {
gs.info(g.short_description + "\n position('my', short_description): " + g.getValue(dbFunction));
}
범위가 지정된 GlideDBFunctionBuilder - datediff()
지정된 시작 날짜/시간 및 종료 날짜/시간을 사용하여 기간을 결정합니다.
field(String field) 메서드를 사용하여 시작 및 종료 날짜/시간 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myDateDiffFunction = functionBuilder.datediff();
myDateDiffFunction = functionBuilder.field('sys_updated_on');
myDateDiffFunction = functionBuilder.field('opened_at');
myDateDiffFunction = functionBuilder.build();
범위가 지정된 GlideDBFunctionBuilder - dayofweek()
지정된 날짜의 요일을 나타내는 정수를 반환합니다.
field(String field) 메서드를 사용하여 지정된 날짜/시간을 정의합니다. constant(String constant) 메서드를 사용하여 주가 일요일에 시작하는지 월요일에 시작하는지 정의합니다.
이 방법은 MySQL, Oracle 및 Microsoft SQL Server 데이터베이스에서만 사용할 수 있습니다. Oracle 데이터베이스를 사용하는 경우 NLS_TERRITORY 설정은 일요일을 주의 첫 번째 날로 하는 영역으로 설정해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 정수 | 메서드에서 constant(String constant) 주의 첫 번째 날이 일요일로 설정된 경우 반환 값은 다음 요일과 연결됩니다.
주의 첫 번째 날이 월요일로 설정된 경우:
constant(String constant) 메서드에 1 또는 2 이외의 값이 제공되면 dayofweek() 메서드는 일요일을 주의 첫 번째 요일로 사용합니다. |
var functionBuilder = new GlideDBFunctionBuilder();
var dayOfWeekFunction = functionBuilder.dayofweek();
dayOfWeekFunction = functionBuilder.field('opened_at');
dayOfWeekFunction = functionBuilder.constant('2');
dayOfWeekFunction = functionBuilder.build();
var now_GR = new GlideRecord('incident');
now_GR.addFunction(dayOfWeekFunction);
now_GR.query();
while(now_GR.next())
gs.log(now_GR.getValue(dayOfWeekFunction));
범위가 지정된 GlideDBFunctionBuilder - divide()
한 정수 필드의 값을 다른 정수 필드의 값으로 나눕니다.
field(String field) 메서드를 사용하여 작업이 수행되는 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myDivideFunction = functionBuilder.divide();
myDivideFunction = functionBuilder.field('order');
myDivideFunction = functionBuilder.field('priority');
myDivideFunction = functionBuilder.build();
범위가 지정된 GlideDBFunctionBuilder - 필드(문자열 필드)
SQL 작업이 수행되는 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 필드 | 문자열 | SQL 작업을 수행할 필드입니다. |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
범위가 지정된 GlideDBFunctionBuilder - length()
필드의 코드 단위 수를 결정합니다.
field(String field) 메서드를 사용하여 작업이 수행되는 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myLengthFunction = functionBuilder.length();
myLengthFunction = functionBuilder.field('short_description');
myLengthFunction = functionBuilder.build();
범위가 지정된 GlideDBFunctionBuilder - multiply()
두 정수 필드의 값을 곱합니다.
field(String field) 메서드를 사용하여 작업이 수행되는 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myMultiplyFunction = functionBuilder.multiply();
myMultiplyFunction = functionBuilder.field('order');
myMultiplyFunction = functionBuilder.field('priority');
myMultiplyFunction = functionBuilder.build();
범위가 지정된 GlideDBFunctionBuilder - orFunc(표현식)
매개변수로 제공된 식 중 하나 이상이 예일 경우 예를 반환하는 새 OR 식을 시작합니다.
하나 이상의 부울 값 식을 매개 변수로 제공해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 표현식 | 부울 값 GlideFunction 표현식 | 현재 이 기준을 충족하는 Glide 함수에는 and(), or() 및 compare()가 포함됩니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 결과 GlideFunction 표현식입니다. |
다음 예에서는 or() 작업을 사용하여 Glidefunction 표현식을 작성하는 방법을 보여줍니다. 필드가 'John'active이거나 필드가 예일 경우 first_name 표현식이 예를 반환합니다. 결과의 표현 문자열은, glidefunction 표현이 받아들여질 때마다 사용할 수 있습니다.
var expr = new GlideDBFunctionBuilder()
.orFunc()
.compare().field('first_name').constant('=').constant('John').endfunc()
.compare().field('active').constant('=').constant(1).endfunc()
.endfunc()
.build();
gs.info("Expression: " + expr);
출력:
Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))
범위가 지정된 GlideDBFunctionBuilder - position()
테이블의 열에 있는 지정된 문자열의 첫 번째 항목을 반환합니다.
선택적으로 문자열 내의 위치를 지정하여 검색을 시작할 수 있습니다. 이 메서드는 MySQL의 LOCATE(substring, str, position) 와 동일합니다.
이 방법을 사용하여 데이터 분석가가 작성한 흥미로운 데이터 요소 또는 사용자 지정 보고서를 찾을 수 있습니다. 일반적으로 이 방법은 데이터 웨어하우징에 사용하거나 유연성이 떨어지는 시스템으로 데이터를 추출, 변환 및 로드(ETL)하는 데 사용합니다.
딕셔너리 레코드에서 이 방법을 사용하려면 glidefunction:position(<serarch_term>,<column>)을 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| search_term | 문자열 | 지정된 테이블 열에서 검색할 텍스트입니다. |
| column | 문자열 | 검색할 테이블 열의 이름입니다. 테이블은 연결된 GlideRecord 객체에 지정됩니다. |
| start_position | 번호 | 옵션입니다. 검색을 시작할 열 텍스트의 위치입니다. 기본값: 1 |
| 유형 | 설명 |
|---|---|
| 안 함 | 지정된 검색어가 처음 나타나는 위치입니다. 관련 텍스트에서 검색어를 찾을 수 없는 경우 0 을 반환합니다. 필수 인수가 NULL이면 NULL 을 반환합니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.position();
dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
dbFunction = functionBuilder.field('short_description'); // column: Name of the table column to search.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column to search
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
}
출력:
*** Script: glidefunction:position('my',short_description)
*** Script: Wireless access is down in my area
position('my', short_description): 28
*** Script: Printer in my office is out of toner
position('my', short_description): 12
*** Script: Reset my password
position('my', short_description): 7
*** Script: I can't launch my VPN client since the last software update
position('my', short_description): 16
*** Script: Missing my home directory
position('my', short_description): 9
*** Script: Seem to have an issue with my hard drive...
position('my', short_description): 28
*** Script: Please remove the latest hotfix from my PC
position('my', short_description): 38
*** Script: I can't get my weather report
position('my', short_description): 13
*** Script: Reset my password
position('my', short_description): 7
*** Script: my PDF docs are all locked from editing
position('my', short_description): 1
*** Script: My desk phone does not work
position('my', short_description): 1
*** Script: Can't log into SAP from my laptop today
position('my', short_description): 25
*** Script: My computer is not detecting the headphone device
position('my', short_description): 1
*** Script: My disk is still having issues. Can't delete a file
position('my', short_description): 1
*** Script: The USB port on my PC stopped working
position('my', short_description): 17
범위가 지정된 GlideDBFunctionBuilder - substring()
지정된 위치에서 시작하는 테이블의 지정된 열에서 하위 문자열을 반환합니다.
선택적으로 문자열 내에서 텍스트 추출을 중지할 위치를 지정할 수도 있습니다. 이 메서드는 MySQL의 LOCATE(substring, str, position) 와 동일합니다.
이 방법은 데이터베이스 수준에서 JavaScript와 유사하게 작동합니다. 이 방법을 사용하여 데이터 분석가를 위한 흥미로운 데이터 요소 또는 사용자 지정 보고서를 찾을 수 있습니다. 일반적으로 이 방법은 데이터 웨어하우징에 사용하거나 유연성이 떨어지는 시스템으로 데이터를 추출, 변환 및 로드(ETL)하는 데 사용합니다.
딕셔너리 기록에서 이 방법을 사용하려면 glidefunction:substring(<field>,<start_position>,<end_position>)을 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 필드 | 문자열 | 텍스트를 가져올 테이블의 열 이름입니다. 테이블은 연결된 GlideRecord 객체에 지정됩니다. |
| start_position | 번호 | 열 텍스트에서 텍스트 추출을 시작할 위치입니다. |
| end_position | 번호 | 옵션입니다. 텍스트 추출을 중지할 열 텍스트의 위치입니다. 기본값: 지정된 열의 텍스트 끝. |
| 유형 | 설명 |
|---|---|
| 문자열 | 지정된 테이블 열에서 추출된 텍스트입니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var functionBuilder = new GlideDBFunctionBuilder();
var dbFunction = functionBuilder.substring();
dbFunction = functionBuilder.field('short_description'); // field: Column within the table to obtain the substring
dbFunction = functionBuilder.constant(0); // start_position: Location in the column text to start extracting text
dbFunction = functionBuilder.constant(20); // end_position: Location in the column text to stop extracting text.
dbFunction = functionBuilder.build();
gs.log(dbFunction);
var gr_incident = new GlideRecord('incident'); // Table containing the column from which to extract the text
gr_incident.addFunction(dbFunction);
gr_incident.addQuery("short_description", "CONTAINS", "my");
gr_incident.setLimit(20);
gr_incident.query();
while(gr_incident.next()) {
gs.info(gr_incident.short_description + "\n substring(short_description, 0, 20): " + gr_incident.getValue(dbFunction));
}
출력:
*** Script: glidefunction:substring(short_description,'0','20')
*** Script: Wireless access is down in my area
substring(short_description, 0, 20): Wireless access is
*** Script: Printer in my office is out of toner
substring(short_description, 0, 20): Printer in my offic
*** Script: Reset my password
substring(short_description, 0, 20): Reset my password
*** Script: I can't launch my VPN client since the last software update
substring(short_description, 0, 20): I can't launch my V
*** Script: Missing my home directory
substring(short_description, 0, 20): Missing my home dir
*** Script: Seem to have an issue with my hard drive...
substring(short_description, 0, 20): Seem to have an iss
*** Script: Please remove the latest hotfix from my PC
substring(short_description, 0, 20): Please remove the l
*** Script: I can't get my weather report
substring(short_description, 0, 20): I can't get my weat
*** Script: Reset my password
substring(short_description, 0, 20): Reset my password
*** Script: my PDF docs are all locked from editing
substring(short_description, 0, 20): my PDF docs are all
*** Script: My desk phone does not work
substring(short_description, 0, 20): My desk phone does
*** Script: Can't log into SAP from my laptop today
substring(short_description, 0, 20): Can't log into SAP
*** Script: My computer is not detecting the headphone device
substring(short_description, 0, 20): My computer is not
*** Script: My disk is still having issues. Can't delete a file
substring(short_description, 0, 20): My disk is still ha
*** Script: The USB port on my PC stopped working
substring(short_description, 0, 20): The USB port on my
범위가 지정된 GlideDBFunctionBuilder - 빼기()
한 정수 필드의 값을 다른 정수 필드에서 뺍니다.
field(String field) 메서드를 사용하여 작업이 수행되는 필드를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var mySubtractFunction = functionBuilder.subtract();
mySubtractFunction = functionBuilder.field('order');
mySubtractFunction = functionBuilder.field('priority');
mySubtractFunction = functionBuilder.build();