GitHubContribuir no GitHub: Editar on-line

O tipo de dados de sequência de caracteres

O tipo de dados string representa uma sequência de zero ou mais caracteres Unicode .

  • Internamente, sequências são codificadas em UTF-8. Caracteres inválidos (non-UTF8) são substituídos por caracteres de substituição Unicode U + FFFD no momento da ingestão.
  • O KQL não possui um tipo de dados equivalente a um único caractere. Um único caractere é representado como uma cadeia de comprimento 1.
  • Embora o próprio tipo de dados string não tenha nenhum limite predefinido no comprimento da sequência, as implementações reais são livres para limitar valores individuais Normalmente, as sequências são limitadas a 1MB (medido usando a codificação UTF-8 ).

Sequências literais

Há várias maneiras de codificar literais do tipo de dados string em um texto de consulta:

  • Coloque a sequência entre aspas duplas ("): "This is a string literal. Single quote characters (') don't require escaping. Double quote characters (") are escaped by a backslash (\)." .
  • Coloque a sequência entre aspas simples ('): 'Another string literal. Single quote characters (') require escaping by a backslash (\). Double quote characters (") do not require escaping.' .

Nas duas representações acima, o caractere barra invertida (\) indica escape. A barra invertida é usada para escapar os caracteres de aspas, caracteres de tabulação (\t), caracteres de nova linha (\n) e si mesmos (\\).

O caractere de nova linha (\n) e o caractere de retorno (\r) não podem ser incluídos como parte da sequência literal sem serem colocados entre aspas. Consulte também literais de sequência de várias linhas

Literais de sequência literal-Atualmente não suportados

Literais de sequência literal também são suportados. Nesta forma, o caractere barra invertida (\) representa a si mesmo e não como um caractere de escape.

  • Coloque entre aspas duplas ("): @"This is a verbatim string literal that ends with a backslash\."
  • Coloque entre aspas simples ('): @'This is a verbatim string literal that ends with a backslash\.' .

O caractere de nova linha (\n) e o caractere de retorno (\r) não podem ser incluídos como parte da sequência literal sem serem colocados entre aspas. Consulte também literais de sequência de várias linhas

Literais de sequência de emenda-Atualmente não Suportado

Dois ou mais literais de sequência são unidos automaticamente para formar um novo literal de sequência na consulta se não tiverem nada entre eles ou se forem separados apenas por espaços em branco e comentários.
Por exemplo, todas as expressões a seguir produzem uma sequência de comprimento 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

Literais de sequência multilinhas-Atualmente não Suportado

Literais de sequência multilinhas são literais de sequência para os quais os caracteres de nova linha (\n) e de retorno (\r) não requerem escape.

  • Literais de sequência multilinhas sempre aparecem entre duas ocorrências do "acorde de triple-backtick" (` ` `).

  • As sequências literais multilinhas não suportam caracteres de escape. Semelhante a literais de sequência literal, literais de sequência multilinhas permitem caracteres de nova linha e de retorno.
  • As sequências literais multilinhas não suportam ofuscação.

Exemplos

// 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!");
    }
    }```

Como pode ser visto, quando uma cadeia é colocada entre aspas duplas ("), o caractere aspas simples (') não requer escape e também o contrário. Esse método facilita a citação de sequências de acordo com o contexto.

Literais de sequência ofuscados-Atualmente não suportado

O sistema controla consultas e as armazena para fins de telemetria e análise. Por exemplo, o texto de consulta pode ser disponibilizado ao proprietário do cluster. Se o texto da consulta incluir informações secretas, como senhas, ele poderá vazar informações que devem ser mantidas privadas Para evitar que tal vazamento ocorra, o autor da consulta pode marcar literais de sequências específicas como literais de sequências ofuscadas Esses literais no texto da consulta são substituídos automaticamente por um número de caracteres de estrela (*), para que não fiquem disponíveis para análise posterior.

Nota

Marque todas as sequências literais que contêm informações secretas, como sequências literais ofuscadas.

Um literal de sequência ofuscado pode ser formado usando um literal de sequência "regular" e anexando um caractere h ou um H na frente dele.

Por exemplo:

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

Em muitos casos, apenas uma parte da sequência literal é secreta.. Nesses casos, divida o literal em uma parte não secreta ou em uma parte secreta. Em seguida, apenas marque a parte secreta como ofuscada

Por exemplo:

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