Abfragen von Tabellen im Skript
Mit den 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üllen, 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. Eine API-Referenz finden Sie unter GlideRecord – Bereichsbezogen.
Gibt alle Datensätze aus einer Tabelle zurück
var target = new GlideRecord('incident');Durch das Erstellen eines GlideRecord wird eine Zielvariable erstellt, die ein GlideRecord-Objekt für die Incident-Tabelle ist.
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 die Abfrage () an die Datenbank aus. Jeder Aufruf von „next()“ würde den nächsten Datensatz zur Verarbeitung laden.
Geben Sie Datensätze aus einer Tabelle zurück, die die Abfragebedingungen erfüllen
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);. Diese Zeile zeigt an, dass Sie nur die Datensätze möchten, bei denen das Feld priority gleich 1 ist. Im Allgemeinen sind die meisten Abfragen, die Sie ausführen möchten, Gleichheitsabfragen. fragt ab, in welcher Reihenfolge Datensätze mit einem Feld, das einem Wert entspricht, gefunden werden sollen. Aus diesem Grund müssen Sie keinen Gleichheitsoperator angeben. Angenommen, Sie möchten alle Incidents finden, bei denen das Feld priority größer als 1 ist. In diesem Fall würden Sie den Operator angeben, 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
}Geben Sie Datensätze aus einer Tabelle zurück, die eine Zeichenfolge enthalten
Verwenden Sie den reservierten Namen „123TEXTQUERY321“, um nach Zeichenfolgenübereinstimmungen in allen Feldern einer Tabelle zu suchen. 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 den Parameter name in der Methode „addQuery“. Sie können diese Option in einer codierten Abfragezeichenfolge verwenden. Anstelle von beispielsweise gr.addQuery('123TEXTQUERY321', 'email');, können Sie gr.addEncodedQuery('123TEXTQUERY321=email')verwenden.
Bei der Zeichenfolgensuche wird zwischen Groß- und Kleinschreibung unterschieden. Das System gibt die gleichen Ergebnisse zurück, unabhängig davon, ob Sie nach E-Mail, E-Mailoder EMAILsuchen.
Geben Sie Datensätze aus mehreren Tabellen in einer Textindexgruppe zurück, die eine Zeichenfolge enthalten
Verwenden Sie den reservierten Namen „123TEXTINDEXGROUP321“, um in einer Tabelle aus einer Textindexgruppe nach einer Zeichenfolge zu suchen. Diese Option gibt Ergebnisse mit Relevanzwerten zurück, die anhand der Einstellungen der Textindexgruppe 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 die Ergebnisse mit den höchsten Relevanzwerten zuerst angezeigt werden. Da alle diese Suchabfragen dieselben Sucheinstellungen für Textverzeichnisgruppen verwenden, werden die Relevanzwerte für ihre Ergebnisse konsistent normalisiert. Wenn Sie dieselben Tabellen durchsuchen, ohne die Methode gr.addQuery('123TEXTINDEXGROUP321', 'portal') zu verwenden, werden die Relevanzwerte der einzelnen Abfragen unterschiedlich normalisiert und sind keine nützliche Grundlage für die Sortierung des zusammengeführten Ergebnissatzes.
„123TEXTINDEXGROUP321“ ist eine reservierte Option für den Parameter name in der Methode „addQuery“. Sie können diese Option in einer codierten Abfragezeichenfolge verwenden. Anstelle von gr.addQuery('123TEXTINDEXGROUP321', 'portal');können Sie gr.addEncodedQuery('123TEXTINDEXGROUP321=portal')verwenden.
Bei der Zeichenfolgensuche mit mehreren Tabellen wird die Groß-/Kleinschreibung nicht beachtet. Das System gibt die gleichen Ergebnisse zurück, unabhängig davon, ob Sie nach E-Mail, E-Mailoder EMAILsuchen.
Verfügbare JavaScript-Operatoren
Beschreibt die Operatoren, die in der addQuery()-Anforderung verwendet werden können.
| 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 LIKE-Vorgang wird nicht unterstützt. Administratoren müssen CONTAINS 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 die IN -Klausel, und speichern Sie ihre sys_ids in einer Zuordnung oder einer durch Kommas getrennten 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.
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
}Weitere Informationen zur GlideRecord -API und den verfügbaren Methoden finden Sie unter 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
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.