GlideDBFunctionCaseBuilder - グローバル
GlideDBCaseStatementBuilder を使用すると、SQL CASE ステートメントを作成し、一連の条件に基づいて値を返すことができます。
この API は、API の定義 GlideElement - グローバル の一部として、またはテーブルをクエリするときに使用できます。CASE ステートメントを作成するには、まずコンストラクター GlideDBFunctionCaseBuilder() を使用して GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。次に、一連の when() および then() 呼び出しとそれに続く単一のオプションの otherwise() 呼び出しを使用して、1 つ以上のケースを定義します。最後に、 build() メソッドを呼び出してビルダーを完成させ、完成したデータベース関数の case ステートメントを生成します。このステートメントは、直接使用することも、他の Glide 関数定義の一部として使用することもできます。
必要なロール:admin、function_field_admin
GlideDBFunctionCaseBuilder - GlideDBFunctionCaseBuilder()
GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
この例では、GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。
var caseBuilder = new GlideDBFunctionCaseBuilder();
GlideDBFunctionCaseBuilder - build()
条件のリストをまとめ、最後の CASE ステートメントを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 完成したケースステートメント。 |
次の例は、単純な case ステートメントを定義して構築する方法を示しています。影響フィールドの数値に応じて、4つの異なる文字列のいずれかが出力されます。
const caseStatement = new GlideDBFunctionCaseBuilder()
.whenCompare("impact", "'='", "'1'").then("'CRITICAL'")
.whenCompare("impact", "'='", "'2'").then("'URGENT'")
.whenCompare("impact", "'='", "'3'").then("'IMPORTANT'")
.otherwise("'NOT IMPORTANT'")
.build();
const gr = new GlideRecord("incident");
gr.addFunction(caseStatement);
gr.setLimit(10);
gr.query();
while(gr.next()) {
gs.info("impact: {0} case: {1}",
[gr.impact, gr.getValue(caseStatment)]);
}
出力:
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 3 case: IMPORTANT
GlideDBFunctionCaseBuilder - then(文字列 exp)
when() メソッドに続いて、then() を使用すると、when() 式が満たされた場合に出力する値を指定できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp | 文字列 | 出力する値。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントの構築を続行するための流暢なビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義して構築する方法を示しています。この場合、 then() 式は、文字列だけでなく、length(short_description などの他のグライド関数の結果も出力する方法を示しています)。
const caseStatement = new GlideDBCaseFunctionBuilder()
.whenEqual("impact", "'1'").then("'CRITICAL'")
.whenEqual("impact", "'2'").then("category")
.whenEqual("impact", "'3'").then("length(short_description)")
.otherwise("'NOT IMPORTANT'")
.build();
const gr = new GlideRecord("incident");
gr.addFunction(caseStatement);
gr.setLimit(10);
gr.query();
while(gr.next()) {
gs.info("impact: {0} case: {1}",
[gr.impact, gr.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: inquiry
*** Script: impact: 2 case: Hardware
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: database
*** Script: impact: 2 case: inquiry
*** Script: impact: 3 case: 28
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: 17
*** Script: impact: 3 case: 29
GlideDBFunctionCaseBuilder - otherwise(文字列 exp)
オプション。when と then の呼び出しの少なくとも 1 組に続いて、otherwise() 呼び出しを使用すると、どの when 式も満たされない場合に出力する値を指定できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp | 文字列 | 出力する値。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントの構築を続行するための流暢なビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義して構築する方法を示しています。
const caseStatement = new GlideDBCaseFunctionBuilder()
.whenEqual("impact", "'1'").then("'CRITICAL'")
.whenEqual("impact", "'2'").then("category")
.whenEqual("impact", "'3'").then("length(short_description)")
.otherwise("'NOT IMPORTANT'")
.build();
const gr = new GlideRecord("incident");
gr.addFunction(caseStatement);
gr.setLimit(10);
gr.query();
while(gr.next()) {
gs.info("impact: {0} case: {1}",
[gr.impact, gr.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: inquiry
*** Script: impact: 2 case: Hardware
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: database
*** Script: impact: 2 case: inquiry
*** Script: impact: 3 case: 28
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: 17
*** Script: impact: 3 case: 29
GlideDBFunctionCaseBuilder - when(文字列 func)
サポートされている「when」式の中で最も汎用性の高い when() メソッドを使用すると、満たす条件として任意のブール値の Glide 関数を指定できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| Func | 文字列 | 評価時にブール値の結果になる Glide 関数。可能な値:
|
| タイプ | 説明 |
|---|---|
| glideDBFunctionCaseBuilder | ステートメントの構築を続行するオブジェクト。 |
次の例は、単純な case ステートメントを定義して構築する方法を示しています。この場合、 when() メソッドを使用して、より複雑な比較式を指定します。式が true と評価された場合、対応する文字列が返されます。
const caseStatment = new GlideDBFunctionCaseBuilder()
// if impact == 1 AND category == 'Software' then output "CRITICAL SOFTWARE"
.when("and(compare(impact, '=', '1'), compare(category, '=',
'Software')")
.then("'CRITICAL SOFTWARE'")
// if impact == 1 then output "CRITICAL OTHER"
.when("compare(impact, '=', '1')")
.then("'CRITICAL OTHER'")
// if impact == 2 OR category == 'Software' then output "URGENT"
.when("or(compare(impact, '=', '2'), compare(category, '=', 'Software')")
.then("'URGENT'")
// If none of the above expressions are true, output "NOT IMPORTANT"
.otherwise("'NOT IMPORTANT'")
.build();
const gr = new GlideRecord("incident");
gr.addFunction(caseStatement);
gr.setLimit(20);
gr.query();
while(gr.next()) {
gs.info("impact: {0} category: {1} case: {2}",
[gr.impact, gr.category, gr.getValue(caseStatement)]);
}
出力:
impact: 2 category: inquiry case: URGENT
impact: 2 category: Hardware case: URGENT
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 2 category: database case: URGENT
impact: 2 category: inquiry case: URGENT
impact: 3 category: software case: URGENT
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: hardware case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: hardware case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 1 category: inquiry case: CRITICAL OTHER
impact: 1 category: software case: CRITICAL SOFTWARE
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 3 category: inquiry case: NOT IMPORTANT
impact: 2 category: software case: URGENT
impact: 1 category: software case: CRITICAL SOFTWARE
GlideDBFunctionCaseBuilder - whenCompare(文字列 exp1, 文字列 op, 文字列 exp2)
比較ケース条件を開始します。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp1 | 文字列 | 左の比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| Op | 文字列 | 引用符で囲まれた比較演算子。次のいずれかである必要があります。
|
| exp2 | 文字列 | 右比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントの構築を続行するための関数ビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義して構築する方法を示しています。この場合、 whenCompare() メソッドを使用して影響度フィールドの値を数値と比較し、一致する場合は指定された文字列を出力します。
const caseStatement = new GlideDBFunctionCaseBuilder()
.whenCompare("impact", "'='", "'1'").then("'CRITICAL'")
.whenCompare("impact", "'='", "'2'").then("URGENT")
.whenCompare("impact", "'='", "'3'").then("IMPORTANT")
.otherwise("'NOT IMPORTANT'")
.build();
const gr = new GlideRecord("incident");
gr.addFunction(caseStatement);
gr.setLimit(10);
gr.query();
while(gr.next()) {
gs.info("impact: {0} case: {1}",
[gr.impact, gr.getValue(caseStatement)]);
}
出力:
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 3 case: IMPORTANT
GlideDBFunctionCaseBuilder - whenEqual(文字列 exp1, 文字列 exp2)
whenCompare() と同様に、whenEqual() は等価性をチェックするための便利なメソッドです。これは whenCompare(leftExpression, '=', rightExpression) と同等です。
| 名前 | タイプ | 説明 |
|---|---|---|
| exp1 | 文字列 | 左の比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| exp2 | 文字列 | 右比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| タイプ | 説明 |
|---|---|
| GlideDBFunctionCaseBuilder | ステートメントの構築を続行するための関数ビルダーオブジェクト。 |
次の例は、単純な case ステートメントを定義して構築する方法を示しています。この場合、 whenEqual() メソッドを使用して影響度フィールドの値を数値と比較し、一致する場合は指定された文字列を出力します。
const caseStatement = new GlideDBFunctionCaseBuilder()
.whenEqual("impact", "'1'").then("'CRITICAL'")
.whenEqual("impact", "'2'").then("'URGENT'")
.whenEqual("impact", "'3'").then("'IMPORTANT'")
.otherwise("'NOT IMPORTANT'")
.build();
const gr = new GlideRecord("incident");
gr.addFunction(caseStatement);
gr.setLimit(10);
gr.query();
while(gr.next()) {
gs.info("impact: {0} case: {1}",
[gr.impact, gr.getValue(caseStatment)]);
}
出力:
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 2 case: URGENT
*** Script: impact: 2 case: URGENT
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 1 case: CRITICAL
*** Script: impact: 3 case: IMPORTANT
*** Script: impact: 3 case: IMPORTANT