Type de données StringThe string data type

Le string type de données représente une chaîne Unicode.The string data type represents a Unicode string. Les chaînes Kusto sont encodées au format UTF-8 et sont par défaut limitées à 1 Mo.Kusto strings are encoded in UTF-8 and by default are limited to 1MB.

Littéraux de chaîneString literals

Il existe plusieurs façons d’encoder des littéraux du string type de données.There are several ways to encode literals of the string data type.

  • Placez la chaîne entre guillemets doubles ( " ) :"This is a string literal. Single quote characters (') don't require escaping. Double quote characters (\") are escaped by a backslash (\\)"Enclose the string in double-quotes ("): "This is a string literal. Single quote characters (') don't require escaping. Double quote characters (\") are escaped by a backslash (\\)"
  • Placez la chaîne entre des guillemets simples ( ' ) :'Another string literal. Single quote characters (\') require escaping by a backslash (\\). Double quote characters (") do not require escaping.'Enclose the string in single-quotes ('): 'Another string literal. Single quote characters (\') require escaping by a backslash (\\). Double quote characters (") do not require escaping.'

Dans les deux représentations ci-dessus, la barre oblique inverse ( \ ) indique un caractère d’échappement.In the two representations above, the backslash (\) character indicates escaping. Il est utilisé pour échapper les caractères de guillemet englobant, les caractères de tabulation ( \t ), les caractères de saut de ligne ( \n ) et lui-même ( \\ ).It's used to escape the enclosing quote characters, tab characters (\t), newline characters (\n), and itself (\\).

Les littéraux de chaîne Verbatim sont également pris en charge.Verbatim string literals are also supported. Dans ce formulaire, la barre oblique inverse ( \ ) correspond à elle-même, et non pas à un caractère d’échappement.In this form, the backslash character (\) stands for itself, and not as an escape character.

  • Entourez les guillemets doubles ( " ) :@"This is a verbatim string literal that ends with a backslash\"Enclose in double-quotes ("): @"This is a verbatim string literal that ends with a backslash\"
  • Insérer des guillemets simples ( ' ) :@'This is a verbatim string literal that ends with a backslash\'Enclose in single-quotes ('): @'This is a verbatim string literal that ends with a backslash\'

Deux littéraux de chaîne dans la requête sans rien entre eux, ou séparés uniquement par un espace blanc et des commentaires, joignez automatiquement pour former un nouveau littéral de chaîne.Two string literals in the query with nothing between them, or separated only by whitespace and comments, automatically join to form a new string literal. Par exemple, les expressions suivantes donnent toute la longueur 13 .For example, the following expressions all yield length 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

ExemplesExamples

// 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}=='

Comme vous pouvez le constater, quand une chaîne est entourée de guillemets doubles ( " ), le caractère à guillemet simple ( ' ) ne nécessite pas d’échappement, et d’autre part.As can be seen, when a string is enclosed in double-quotes ("), the single-quote (') character doesn't require escaping, and also the other way around. Cette méthode facilite le devis des chaînes en fonction du contexte.This method makes it easier to quote strings according to context.

Littéraux de chaîne obscurcisObfuscated string literals

Le système effectue le suivi des requêtes et les stocke à des fins de télémétrie et d’analyse.The system tracks queries and stores them for telemetry and analysis purposes. Par exemple, le texte de la requête peut être mis à la disposition du propriétaire du cluster.For example, the query text might be made available to the cluster owner. Si le texte de la requête contient des informations secrètes, telles que des mots de passe, il peut y avoir des fuites d’informations qui doivent rester privées.If the query text includes secret information, such as passwords, it might leak information that should be kept private. Pour éviter qu’une telle fuite ne se produise, l’auteur de la requête peut marquer des littéraux de chaîne spécifiques comme des littéraux de chaîne obscurcis.To prevent such a leak from happening, the query author may mark specific string literals as obfuscated string literals. Ces littéraux dans le texte de la requête sont automatiquement remplacés par un nombre de * caractères étoile (), afin qu’ils ne soient pas disponibles pour une analyse ultérieure.Such literals in the query text are automatically replaced by a number of star (*) characters, so that they aren't available for later analysis.

Important

Marquez tous les littéraux de chaîne qui contiennent des informations secrètes comme littéraux de chaîne obscurcis.Mark all string literals that contain secret information, as obfuscated string literals.

Un littéral de chaîne obscurci peut être formé en acceptant un littéral de chaîne « normal » et en ajoutant un h caractère ou un H caractère devant celui-ci.An obfuscated string literal can be formed by taking a "regular" string literal, and prepending an h or an H character in front of it.

Par exemple :For example:

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

Notes

Dans de nombreux cas, seule une partie du littéral de chaîne est secrète.In many cases, only a part of the string literal is secret. Dans ce cas, fractionnez le littéral en un composant non secret et un composant secret.In those cases, split the literal into a non-secret part and a secret part. Ensuite, marquez uniquement la partie secrète comme obscurcie.Then, only mark the secret part as obfuscated.

Par exemple :For example:

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