---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://www.servicenow.com/docs/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# GlideDBFunctionCaseBuilder - グローバル

# GlideDBFunctionCaseBuilder - グローバル {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：16分

GlideDBCaseStatementBuilder API を使用すると、SQL CASE ステートメントを作成し、一連の条件に基づいて値を返すことができます。

この API は、 [GlideElement - グローバル](https://www.servicenow.com/docs/KTuTJQIwiU7zmj2waBXwgQ#c_GlideElementAPI "GlideElement API には、フィールドとその値を処理するための便利なスクリプトメソッドが多数用意されています。GlideElement メソッドは、現在の Glide レコードのフィールドで使用できます。") API の定義の一部として、またはテーブルをクエリするときに使用できます。`CASE` ステートメントを作成するには、まず、コンストラクター GlideDBFunctionCaseBuilder() を使用して GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。次に、一連の when() と then() 呼び出しを使用し、その後にオプションの otherwise () 呼び出しを 1 つ続けて使用して、1 つ以上のケースを定義します。最後に、 build() メソッドを呼び出してビルダーを完成させ、完成したデータベース関数 case ステートメントを生成します。このステートメントは、直接使用することも、他の Glide 関数定義の一部として使用することもできます。

必要なロール:admin、function_field_admin

## GlideDBFunctionCaseBuilder - GlideDBFunctionCaseBuilder() {#ariaid-title2}

GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。
{#GlideDBFCB_O__table_zxm_3td_svb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 1. パラメーター]

{#GlideDBFCB_O__table_zxm_3td_svb}  
この例では、GlideDBFunctionCaseBuilder オブジェクトをインスタンス化します。

    var caseBuilder = new GlideDBFunctionCaseBuilder();

## GlideDBFunctionCaseBuilder - build() {#ariaid-title3}

条件のリストを終了し、最後の CASE ステートメントを作成します。
{#GlideDBFCB-build__table_y1r_4ch_jbb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 2. パラメーター]

{#GlideDBFCB-build__table_y1r_4ch_jbb} {#GlideDBFCB-build__table_z1r_4ch_jbb__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | 完成したケースステートメント。 |
[表 : 3. 返される内容]

{#GlideDBFCB-build__table_z1r_4ch_jbb}  
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。影響度フィールドの数値に応じて、4 つの異なる文字列のうちの 1 つが出力されます。

    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_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
        gs.info("impact: {0}  case: {1}",
                [gr_incident.impact, gr_incident.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 - それ以外の場合 (文字列 exp) {#ariaid-title4}

オプション。when と then の少なくとも 1 つの呼び出しのペアに続いて、otherwise() 呼び出しを使用すると、どの when 式も満たされない場合に出力する値を指定できます。
{#GDBFCB-otherwise_exp__table_nd4_ngf_xwb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| exp | 文字列 | 出力する値。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
[表 : 4. パラメーター]

{#GDBFCB-otherwise_exp__table_nd4_ngf_xwb} {#GDBFCB-otherwise_exp__table_od4_ngf_xwb__entry__2}

| タイプ | 説明 |
|-|-|
| GlideDBFunctionCaseBuilder | ステートメントの作成を続行するための流暢なビルダーオブジェクト。 |
[表 : 5. 返される内容]

{#GDBFCB-otherwise_exp__table_od4_ngf_xwb}  
次の例は、単純な 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_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
          gs.info("impact: {0}  case: {1}",
                  [gr_incident.impact, gr_incident.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 - then(文字列 exp) {#ariaid-title5}

when()メソッドに続いて、then()を使用すると、when()式が満たされた場合に出力する値を指定できます。
{#GDBFCB-then_exp__table_xmq_42f_xwb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| exp | 文字列 | 出力する値。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
[表 : 6. パラメーター]

{#GDBFCB-then_exp__table_xmq_42f_xwb} {#GDBFCB-then_exp__table_ymq_42f_xwb__entry__2}

| タイプ | 説明 |
|-|-|
| GlideDBFunctionCaseBuilder | ステートメントの作成を続行するための流暢なビルダーオブジェクト。 |
[表 : 7. 返される内容]

{#GDBFCB-then_exp__table_ymq_42f_xwb}  
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。この場合、 then() 式は、文字列だけでなく、 `length(short_description)` などの他の Glide 関数の結果も出力する方法を示しています。

    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_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
          gs.info("impact: {0}  case: {1}",
                  [gr_incident.impact, gr_incident.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(文字列関数) {#ariaid-title6}

サポートされている「when」式の中で最も汎用性の高い when() メソッドを使用すると、満たす条件としてブール値の Glide 関数を指定できます。
{#GDBFCB-whenFunc__table_dmg_sy2_xwb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| 機能 | 文字列 | 評価時にブール値の結果が返される Glide 関数。可能な値： * glidefunction:compare * glidefunction:および * glidefunction:または {#GDBFCB-whenFunc__ul_zc1_zy2_xwb} |
[表 : 8. パラメーター]

{#GDBFCB-whenFunc__table_dmg_sy2_xwb} {#GDBFCB-whenFunc__table_emg_sy2_xwb__entry__2}

| タイプ | 説明 |
|-|-|
| glideDBFunctionケースビルダー | ステートメントの作成を続行するオブジェクト。 |
[表 : 9. 返される内容]

{#GDBFCB-whenFunc__table_emg_sy2_xwb}  
次の例は、単純な case ステートメントを定義してビルドする方法を示しています。この場合、 when() メソッドを使用して、より複雑な比較式を指定します。式が true と評価された場合、対応する文字列が返されます。

    const caseStatement = 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_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement); 
    gr_incident.setLimit(20); 
    gr_incident.query(); 
    while(gr_incident.next())  { 
          gs.info("impact: {0}  category: {1}  case: {2}", 
                [gr_incident.impact, gr_incident.category, gr_incident.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) {#ariaid-title7}

比較ケース条件を開始します。
{#GlideDBFCB-whenCompare_S_S_S__table_jj1_2q2_xwb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| exp1 | 文字列 | 左比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| オペアンプ | 文字列 | 引用符で囲まれた比較演算子。 有効な値： * "'='" * "'\<'" * "'\>'" * "'\<='" * "'\>='" {#GlideDBFCB-whenCompare_S_S_S__ul_gpp_br2_xwb} |
| exp2 | 文字列 | 右比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
[表 : 10. パラメーター]

{#GlideDBFCB-whenCompare_S_S_S__table_jj1_2q2_xwb} {#GlideDBFCB-whenCompare_S_S_S__table_kj1_2q2_xwb__entry__2}

| タイプ | 説明 |
|-|-|
| GlideDBFunctionCaseBuilder | ステートメントの構築を続行するための関数ビルダーオブジェクト。 |
[表 : 11. 返される内容]

{#GlideDBFCB-whenCompare_S_S_S__table_kj1_2q2_xwb}  
次の例は、単純な 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_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next()) {
        gs.info("impact: {0} case: {1}",
                [gr_incident.impact, gr_incident.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) {#ariaid-title8}

whenCompare()と同様に、whenEqual()は等価性をチェックするのに便利なメソッドです。これは 、whenCompare(leftExpression, '=', rightExpression) と同等です。
{#GDBCFB-whenEqual__table_hcb_2w2_xwb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| exp1 | 文字列 | 左比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
| exp2 | 文字列 | 右比較式。定数、フィールドへの参照、または別の Glide 関数を指定できます。 |
[表 : 12. パラメーター]

{#GDBCFB-whenEqual__table_hcb_2w2_xwb} {#GDBCFB-whenEqual__table_icb_2w2_xwb__entry__2}

| タイプ | 説明 |
|-|-|
| GlideDBFunctionCaseBuilder | ステートメントの構築を続行するための関数ビルダーオブジェクト。 |
[表 : 13. 返される内容]

{#GDBCFB-whenEqual__table_icb_2w2_xwb}  
次の例は、単純な 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_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
        gs.info("impact: {0}  case: {1}",
                [gr_incident.impact, gr_incident.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


