GitHubContribute in GitHub: Online bearbeiten

Datentyp 'string'

Der Datentyp string stellt eine Folge von null oder mehr Unicode -Zeichen dar.

  • Intern werden Zeichenfolgen in UTF-8codiert. Ungültige (non-UTF8) Zeichen werden bei der Aufnahme durch U + FFFD Unicode-Ersetzungszeichen ersetzt.
  • KQL hat keinen Datentyp, der einem einzelnen Zeichen entspricht. Ein einzelnes Zeichen wird als Zeichenfolge mit der Länge 1 dargestellt.
  • Während der Datentyp string selbst keine vordefinierte Begrenzung für die Länge der Zeichenfolge hat, können die tatsächlichen Implementierungen einzelne Werte begrenzen. Üblicherweise sind Zeichenfolgen auf 1MB begrenzt (gemessen mit UTF-8 -Codierung).

Zeichenfolgeliterale

Es gibt mehrere Möglichkeiten, Literale des Datentyps string in einem Abfragetext zu codieren:

  • Setzen Sie die Zeichenfolge in Anführungszeichen ("): "This is a string literal. Single quote characters (') don't require escaping. Double quote characters (") are escaped by a backslash (\)."
  • Schließen Sie die Zeichenfolge in einfache Anführungszeichen (') ein: 'Another string literal. Single quote characters (') require escaping by a backslash (\). Double quote characters (") do not require escaping.'

In den beiden obigen Darstellungen gibt der Backslash (\) das Escapezeichen an. Der Backslash wird als Escapezeichen für die einschließenden Anführungszeichen, Tabulatorzeichen (\t), Zeilenvorschubzeichen (\n) und sich selbst (\\) verwendet.

Das Zeilenvorschubzeichen (\n) und das Rückgabezeichen (\r) können ohne Anführungszeichen nicht als Teil des Zeichenfolgeliterals eingeschlossen werden. Siehe auch Mehrzeilige Zeichenfolgeliterale.

Wörtliche Zeichenfolgeliterale-Derzeit nicht unterstützt

Wörtliche Zeichenfolgeliterale werden ebenfalls unterstützt. In diesem Format steht der Backslash (\) für sich selbst und nicht als Escapezeichen.

  • Setzen Sie die Zeichenfolge in Anführungszeichen ("): @"This is a verbatim string literal that ends with a backslash\."
  • Setzen Sie sie in einfache Anführungszeichen ('): @'This is a verbatim string literal that ends with a backslash\.'

Das Zeilenvorschubzeichen (\n) und das Rückgabezeichen (\r) können ohne Anführungszeichen nicht als Teil des Zeichenfolgeliterals eingeschlossen werden. Siehe auch Mehrzeilige Zeichenfolgeliterale.

Splicing-Zeichenfolgeliterale-derzeit nicht unterstützt

Zwei oder mehr Zeichenfolgeliterale werden automatisch verknüpft, um ein neues Zeichenfolgeliteral in der Abfrage zu bilden, wenn sie nichts dazwischen haben, oder sie werden nur durch Leerzeichen und Kommentare getrennt.
Die folgenden Ausdrücke ergeben beispielsweise alle eine Zeichenfolge mit der Länge 13:

print strlen("Hello"', '@"world!"); // Nothing between them

print strlen("Hello" ', ' @"world!"); // Separated by whitespace only

print strlen("Hello"
  // Comment
  ', '@"world!"); // Separated by whitespace and a comment

Mehrzeilige Zeichenfolgeliterale-Derzeit nicht unterstützt

Mehrzeilige Zeichenfolgeliterale sind Zeichenfolgeliterale, für die die Zeilenvorschubzeichen (\n) und Rückkehrzeichen (\r) kein Escapezeichen erfordern.

  • Mehrzeilige Zeichenfolgeliterale treten immer zwischen zwei Vorkommen des "Triple-Backtick Chord" (` ` `) auf.

  • Mehrzeilige Zeichenfolgeliterale unterstützen keine Escapezeichen. Ähnlich wie verbatim string literalslassen mehrzeilige Zeichenfolgeliterale Zeilenvorschubzeichen und Rückgabezeichen zu.
  • Mehrzeilige Zeichenfolgeliterale unterstützen keine Verschlüsselung.

Beispiele

// Simple string notation
print s1 = 'some string', s2 = "some other string"

// Strings that include single or double-quotes can be defined as follows
print s1 = 'string with " (double quotes)',
          s2 = "string with ' (single quotes)"

// Strings with '\' can be prefixed with '@' (as in c#)
print myPath1 = @'C:\Folder\filename.txt'

// Escaping using '\' notation
print s = '\\n.*(>|\'|=|\")[a-zA-Z0-9/+]{86}=='

// Encode a C# program in a Kusto multi-line string
print program=```
    public class Program {
    public static void Main() {
      System.Console.WriteLine("Hello!");
    }
    }```

Wie zu sehen ist, wenn eine Zeichenfolge in Anführungszeichen (") eingeschlossen ist, erfordert das Hochkomma (') kein Escapezeichen und umgekehrt. Diese Methode erleichtert es, Zeichenfolgen entsprechend dem Kontext in Anführungszeichen zu setzen.

Verschlüsselte Zeichenfolgeliterale-Derzeit nicht unterstützt

Das System verfolgt Abfragen und speichert sie für Telemetrie-und Analysezwecke. Der Abfragetext kann beispielsweise dem Clustereigner zur Verfügung gestellt werden. Wenn der Abfragetext geheime Informationen enthält, z. B. Kennwörter, kann es zu Datenlecks kommen, die privat bleiben sollten. Um ein solches Leck zu verhindern, kann der Abfrageautor bestimmte Zeichenfolgeliterale als verschlüsselte Zeichenfolgeliteralemarkieren. Solche Literale im Abfragetext werden automatisch durch eine Anzahl von Sternzeichen (*) ersetzt, sodass sie für eine spätere Analyse nicht verfügbar sind.

Anmerkung

Markieren Sie alle Zeichenfolgeliterale, die geheime Informationen enthalten, als verschlüsselte Zeichenfolgeliterale.

Ein verschlüsseltes Zeichenfolgeliteral kann gebildet werden, indem ein "reguläres" Zeichenfolgeliteral verwendet wird, dem ein Zeichen h oder H vorangestellt wird.

Beispiel:

h'hello'
h@'world'
h"hello"

In vielen Fällen ist nur ein Teil des Zeichenfolgeliterals geheim. In diesen Fällen teilen Sie das Literal in einen nicht geheimen Teil und einen geheimen Teil auf. Markieren Sie dann nur den geheimen Teil als verschleiert.

Beispiel:

print x="https://contoso.blob.core.windows.net/container/blob.txt?"
    h'sv=2012-02-12&se=2013-04-13T0...'