Tabellen im Skript werden abgefragt

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 7 Minuten Lesedauer
  • Mit Methoden in der GlideRecord-API können Sie alle Datensätze aus einer Tabelle zurückgeben, Datensätze aus einer Tabelle zurückgeben, die bestimmte Bedingungen erfüllt, oder Datensätze zurückgeben, die eine Zeichenfolge aus einer einzelnen Tabelle oder aus mehreren Tabellen in einer Textindexgruppe enthalten.

    Abfragetabellen mit der GlideRecord-API. API-Referenz finden Sie unter GlideRecord: Bereichsbezogen .

    Gibt alle Datensätze aus einer Tabelle zurück

    Um eine Tabelle abzufragen, erstellen Sie zuerst ein GlideRecord-Objekt. Um einen GlideRecord zu erstellen, erstellen Sie Folgendes im Skript:
    var target = new GlideRecord('incident');

    Durch das Erstellen eines GlideRecord wird ein erstellt Ziel Variable, die ein GlideRecord-Objekt für die Incident-Tabelle ist.

    Um alle Datensätze aus der Incident-Tabelle zu verarbeiten, fügen Sie das folgende Skript hinzu:
    target.query(); // Issue the query to the database to get all records 
    while (target.next()) { 
      // add code here to process the incident record 
    }

    Dieses Skript gibt ein Problem mit aus Abfrage () In die Datenbank. Jeder Anruf an Next() Würde den nächsten Datensatz zur Verarbeitung laden.

    Gibt Datensätze aus einer Tabelle zurück, die die Abfragebedingungen erfüllen

    Meistens möchten Sie einen bestimmten Datensatz oder einen bestimmten Satz von Datensätzen abrufen, und Sie haben einige Kriterien (Abfragebedingungen), die die Datensätze definieren, die Sie abrufen möchten. Angenommen, Sie möchten alle Incident-Datensätze abrufen, die einen Prioritätswert von 1 haben. Hier ist der Code, der das erreichen würde.
    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 
    }
    Beachten Sie, dass das Beispielskript enthält Target.addQuery('Priority', 1); . Diese Zeile gibt an, dass Sie nur die Datensätze wünschen, bei denen priorityFeld ist gleich 1. Im Allgemeinen sind die meisten Abfragen, die Sie ausführen möchten, Gleichheitsabfragen. Abfragen, bei denen Sie Datensätze mit einem Feld finden möchten, das einem Wert entspricht. Aus diesem Grund müssen Sie keinen Gleichheitsoperator angeben. Angenommen, Sie möchten jedoch alle Incidents finden, bei denen priorityFeld ist größer als 1. In diesem Fall geben Sie den Operator an, den Sie auf die Abfrage anwenden möchten.
    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 
    }

    Gibt Datensätze aus einer Tabelle zurück, die eine Zeichenfolge enthalten

    Verwenden Sie „123TEXTQUERY321“ Reservierter Name zur Suche nach Zeichenfolgen-Übereinstimmungen in allen Feldern einer Tabelle. Dieses Skript gibt beispielsweise Datensätze aus der Incident-Tabelle mit Feldwerten zurück, die die Zeichenfolge „E-Mail“ enthalten.

    var now_GR = new GlideRecord('incident');
    gr.addQuery('123TEXTQUERY321', 'email');
    gr.query();

    „123TEXTQUERY321“ Ist eine reservierte Option für nameParameter in AddQuery() Methode. Sie können diese Option in einer codierten Abfragezeichenfolge verwenden. Zum Beispiel anstelle von gr.addQuery('123TEXTQUERY321', 'email'); , Können Sie verwenden gr.addEncodedQuery('123TEXTQUERY321=email') .

    Bei der Zeichenfolgensuche wird zwischen Groß- und Kleinschreibung unterschieden. Das System gibt die gleichen Ergebnisse zurück, unabhängig davon, nach denen Sie suchen E-Mail , E-Mail , Oder E-MAIL .

    Hinweis:
    Bevor Sie mit einer Zeichenfolgensuche abfragen können, müssen Sie die Textindizierung (und optional Suchattribute) für die Tabelle konfigurieren, die Sie durchsuchen möchten. Weitere Informationen finden Sie unter Konfigurieren Sie eine einzelne Tabelle für die Indizierung und Suche .

    Gibt Datensätze aus mehreren Tabellen in einer Textindexgruppe zurück, die eine Zeichenfolge enthalten

    Verwenden Sie „123TEXTINDEXGROUP321“ Reservierter Name zum Suchen nach einer Zeichenfolge in einer Tabelle aus einer Textindexgruppe. Diese Option gibt Ergebnisse mit Relevanzpunktzahlen zurück, die mithilfe der Einstellungen der Textindexgruppe berechnet werden.

    Hinweis:
    Sie können jeweils nur eine Tabelle in der Textindexgruppe abfragen. Verwenden Sie diese Option, wenn Sie mehrere Abfragen mit einer einzelnen Tabelle ausgeben und ihre Ergebnisse zusammenführen möchten, wobei sie nach Relevanzpunktzahl sortiert werden. Der Vorteil dieser Option besteht darin, dass Relevanzpunktzahlen der Suchergebnisse für die einzelnen Tabellenabfragen konsistent für alle Tabellen in der Textindexgruppe normalisiert werden.
    Dieses Skript gibt beispielsweise Datensätze aus der Knowledge-Tabelle zurück, die das Stichwort „email“ enthalten, wobei Relevanzpunktzahlen für die Indexgruppe „Portal“ berechnet werden.
    var now_GR = new GlideRecord('kb_knowledge');
    gr.addQuery('123TEXTQUERY321', 'email');
    gr.addQuery('123TEXTINDEXGROUP321', 'portal');
    gr.query();

    Sie können eine ähnliche Abfrage für jede zusätzliche Tabelle in der Indexgruppe „Portal“ erstellen, die Sie durchsuchen möchten, und dann die Ergebnisse der einzelnen Abfragen zusammenführen, wobei zuerst die Ergebnisse mit den höchsten Relevanzpunktzahlen angezeigt werden. Da alle diese Suchabfragen dieselben Sucheinstellungen für Textindexgruppen verwenden, werden die Relevanzpunktzahlen für ihre Ergebnisse einheitlich normalisiert. Wenn Sie denselben Satz von Tabellen durchsucht haben, ohne zu verwenden gr.addQuery('123TEXTINDEXGROUP321', 'Portal') Methode: Die Relevanzpunktzahlen der einzelnen Abfragen würden anders normalisiert und wären keine nützliche Grundlage für die Sortierung des zusammengeführten Ergebnissatzes.

    „123TEXTINDEXGROUP321“ Ist eine reservierte Option für nameParameter in AddQuery() Methode. Sie können diese Option in einer codierten Abfragezeichenfolge verwenden. Zum Beispiel anstelle von gr.addQuery('123TEXTINDEXGROUP321', 'Portal'); , Können Sie verwenden gr.addEncodedQuery('123TEXTINDEXGROUP321=Portal') .

    Bei der Suche mit mehreren Tabellen wird zwischen Groß- und Kleinschreibung unterschieden. Das System gibt die gleichen Ergebnisse zurück, unabhängig davon, nach denen Sie suchen E-Mail , E-Mail , Oder E-MAIL .

    Hinweis:
    Bevor Sie Tabellen in einer Indexgruppe abfragen können, müssen Sie Textindizierungs- und Suchattribute für diese Tabellen konfigurieren und in die Indexgruppe aufnehmen. Weitere Informationen finden Sie unter Konfigurieren Sie mehrere Tabellen für die Indizierung und Suche . Alle Tabellen in der Indexgruppe müssen das V4-Indexierungsformat verwenden.

    Verfügbare JavaScript-Operatoren

    Beschreibt die Operatoren, die in der addQuery()-Anforderung verwendet werden können.

    Tabelle : 1. Verfügbare JavaScript-Operatoren
    Feld Definition addQuery
    = Das Feld muss gleich dem angegebenen Wert sein. addQuery('priority', '=', 1);
    > Das Feld muss größer als der angegebene Wert sein. addQuery('priority', '>', 1);
    < Das Feld muss kleiner als der angegebene Wert sein. addQuery ('priority', '<', 3);
    >= Das Feld muss größer oder gleich dem angegebenen Wert sein. addQuery('priority', '!=', 1);
    <= Das Feld muss kleiner oder gleich dem angegebenen Wert sein. addQuery('priority', '<=', 3);
    != Das Feld darf nicht gleich dem angegebenen Wert sein. addQuery('priority', '!=', 1);
    STARTSWITH Das Feld muss mit dem angegebenen Wert beginnen. Das rechts gezeigte Beispiel gibt alle Datensätze zurück, in denen das Feld short_description mit dem Text „Error“ beginnt. addQuery('short_description', 'STARTSWITH', 'Error');
    CONTAINS Das Feld muss den angegebenen Wert an beliebiger Stelle im Text enthalten. Das rechts gezeigte Beispiel gibt alle Datensätze zurück, in denen das Feld short_description an beliebiger Stelle den Text „Error“ enthält.
    Hinweis:
    Der Vorgang „GEFÄLLT MIR“ wird nicht unterstützt. Administratoren müssen „ENTHÄLT“ in der Abfrage verwenden.
    addQuery('short_description', 'CONTAINS', 'Error');
    IN Verwendet eine Wertekarte, die Kommas zulässt, und erfasst eine Sammlung von Datensätzen, die eine andere Anforderung erfüllen. Verhält sich wie Select * from <table> where short_description IN ('Error', 'Success', 'Failure'), was identisch ist mit Select * from <table> where short_description='Error'. Um beispielsweise alle Variablenwerte abzufragen, die zu einer bestimmten Aktivität gehören, verwenden Sie INKlausel und speichern ihre sys_IDs in einer Karte oder einer kommagetrennten Liste. Fragen Sie dann die Variablenwerttabelle ab, und geben Sie diese Liste der sys_ids an. addQuery ('short_description', 'IN', 'Error,Success,Failure');
    ENDSWITH Das Feld muss mit dem angegebenen Wert enden. Das rechts gezeigte Beispiel gibt alle Datensätze zurück, in denen das Feld short_description mit dem Text „Error“ endet. addQuery ('short_description', 'ENDSWITH', 'Error');
    DOES NOT CONTAIN Wählt Datensätze aus, die NICHT mit dem Muster im Feld übereinstimmen. Dieser Operator ruft keine leeren Felder ab. Verwenden Sie für leere Werte die Operatoren „is empty“ oder „is not empty“. Das rechts gezeigte Beispiel gibt alle Datensätze zurück, in denen das Feld short_description nicht das Wort „Fehler“ enthält. addQuery('short_description', 'DOES NOT CONTAIN', 'Error');
    NOT IN Verwendet eine Wertekarte, die Kommas zulässt, und erfasst eine Sammlung von Datensätzen, die eine andere Anforderung erfüllen. Verhält sich wie: Select * from <table> where short_description NOT IN ('Error'). addQuery('short_description', 'NOT IN', 'Error,Success,Failure');
    INSTANCEOF Spezieller Operator, der nur Datensätze einer angegebenen „Klasse“ für erweiterte Tabellen abruft. Das Codebeispiel rechts zeigt, wie alle Configuration Items abgerufen werden, die als Computer klassifiziert sind. addQuery('sys_class_name', 'INSTANCEOF', 'cmdb_ci_computer');

    Weitere Informationen zu den für Filter und Abfragen verfügbaren Operatoren finden Sie unter Operators available for filters and queries.

    Es gibt auch einige spezielle Methoden, mit denen Sie nach Daten suchen können, die NULL oder NOT NULL sind. Um nach allen Incidents zu suchen, bei denen das Feld short_description nicht angegeben wurde (NULL ist), verwenden Sie die folgende Abfrage:
    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 
    }
    Um alle Incidents zu finden, für die eine short_description angegeben wurde, verwenden Sie die folgende Abfrage:
    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 
    }

    Weitere Informationen zu finden GlideRecord API und ihre verfügbaren Methoden, siehe GlideRecord .

    Beispiele für GlideRecord-Abfragen

    Diese Beispiele veranschaulichen, wie verschiedene GlideRecord-Abfragen ausgeführt werden.

    query

    var rec = new GlideRecord('incident');
    rec.query(); 
    while(rec.next()) { 
      gs.print(rec.number + ' exists'); }

    update

    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(); }

    insert

    var rec = new GlideRecord('incident');
    rec.initialize();
    rec.short_description = 'Network problem'; 
    rec.caller_id.setDisplayValue('Joe Employee'); 
    rec.insert();

    delete

    var rec = new GlideRecord('incident');
    rec.addQuery('active',false);
    rec.query(); 
    while(rec.next()) { 
      gs.print('Inactive incident ' + rec.number + ' deleted');
      rec.deleteRecord(); }

    Servicekatalogtabellen abfragen

    Sie können die Variablen der Tabelle „Servicekatalog-Anforderungselement“ [sc_req_item] nicht direkt abfragen. Fragen Sie stattdessen die Tabelle „Variablen-Verantwortlicher“ [sc_item_option_mtom] ab, indem Sie zwei Abfragen hinzufügen, eine für den Variablennamen und eine für den Wert. Die Abfrage gibt die Viele-zu-Viele-Beziehung zurück, in der Sie per Dot-Walk zum angeforderten Element wechseln können. Mit dem folgenden Beispiel werden die Anforderungselemente gesucht, die die Variable item_name mit dem Wert item_value enthalten, und die Nummern der Anforderungselemente angezeigt:
    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); }

    Weitere Informationen finden Sie unter GlideRecord .