Строковый тип данных

Тип string данных представляет последовательность из нуля или более символов Юникода .

Сведения об операторах строкового запроса см. в разделе Строковые операторы.

Примечание

  • Внутри строки кодируются в UTF-8. Недопустимые (не UTF8) символы заменяются символами замены юникода U+FFFD во время приема.
  • Kusto не имеет типа данных, эквивалентного одному символу. Один символ представляется в виде строки длиной 1.
  • При приеме string типа данных, если одно строковое значение в записи превышает 1 МБ (измеряется с использованием кодировки UTF-8), значение усекается и прием выполняется успешно. Если одно строковое значение в записи или вся запись превышает допустимое ограничение в 64 МБ, прием завершается ошибкой.

Литералы string

Для кодирования строковых литералов в тексте запроса можно использовать двойные или одинарные кавычки. При использовании двойных кавычек необходимо экранировать вложенные символы двойных кавычек с обратной косой чертой (\). При использовании одиночных кавычек необходимо экранировать вложенные символы одинарных кавычек, и экранировать двойные кавычки не нужно.

Используйте символ обратной косой черты, чтобы экранировать включающиеся символы кавычек, символы табуляции (\t), символы новой строки (\n) и саму обратную косую черту (\\).

Примечание

Символ новой строки (\n) и возвращаемый символ (\r) должны быть заключены в кавычки, если не используются многострочный строковые литералы.

Строковые литералы verbatim

Также поддерживаются буквенные строковые литералы. В этой форме символ обратной косой черты (\) обозначает себя и не является escape-символом. Добавление символа к @ строковым литералам служит в качестве дословного идентификатора. В буквальных строковых литералах двойные кавычки экранируются двойными кавычками, а одинарные кавычки — с одинарными кавычками.

Пример см. в разделе Verbatim string.

Примечание

Символ новой строки (\n) и возвращаемый символ (\r) должны быть заключены в кавычки, если не используются многострочный строковые литералы.

Многострочные строковые литералы

Укажите многострочный строковый литералы с помощью аккорда triple-backtick (''')) в начале и конце литерала.

Пример см. в разделе Многострочный строковый литерал.

Примечание

  • Многострочный строковый литералы поддерживают символы newline (\n) и return (\r).
  • Многострочный строковый литералы не поддерживают escape-символы. Аналогично буквальным строковым литералам.
  • Многострочный строковый литералы не поддерживают обфускацию.

Объединение разделенных строковых литерал

Если в запросе Kusto два или более смежных строковых литерала не имеют разделения между ними, они автоматически объединяются для формирования нового строкового литерала. Аналогичным образом, если строковые литералы разделяются только пробелами или комментариями, они также объединяются для формирования нового строкового литерала.

Пример см. в разделе Объединенные строковые литералы.

Замаскированные строковые литералы

Запросы хранятся для телеметрии и анализа. Чтобы защитить конфиденциальную информацию, такую как пароли и секреты, можно пометить строку как скрытый строковый литерал. Эти помеченные строки заменяются звездочками (*) в тексте запроса.

Скрываемый строковый литерал создается путем добавления символа h или H перед стандартным или дословным строковым литералом.

Пример см. в статье Скрытый строковый литерал.

Важно!

Пометьте все строковые литералы, содержащие секретные сведения, как скрытые строковые литералы.

Совет

В некоторых ситуациях только часть строкового литерала содержит секретные сведения. В таких случаях разделите литерал на несекретную часть и секретную часть. Затем пометьте только секретную часть как скрытую.

Примеры

Строковый литерал с кавычками

В следующем примере показано, как использовать кавычки в строковых литералах, охватываемых одинарными и двойными кавычками. Дополнительные сведения см. в разделе Строковые литералы.

print
    s1 = 'string with "double quotes"',
    s2 = "string with 'single quotes'"

Выходные данные

s1 s2
строка с двойными кавычками строка с "одинарными кавычками"

Строковый литерал с экранированием обратной косой черты

В следующем примере создается шаблон регулярного выражения с использованием обратных косых черт для экранирования специальных символов. Дополнительные сведения см. в разделе Строковые литералы.

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

Выходные данные

pattern
\n.*(>|'|=|") [a-zA-Z0-9/+]{86}==

Строковый литерал в Юникоде

В следующем примере показано, что для включения символа Юникода в строковый литерал требуется обратная косая черта.

print space = "Hello\u00A0World"

Выходные данные

space
Hello World

Буквальный строковый литерал

В следующем примере создается путь, в котором обратные косые черты являются частью пути, а не escape-символами. Для этого знак строки @ добавляется к строке, создавая буквальный строковый литерал.

print myPath = @'C:\Folder\filename.txt'

Выходные данные

myPath
C:\Folder\filename.txt

Многострочный строковый литерал

В следующем примере показан синтаксис многострочный строковый литерал, который использует новые строки и вкладки для стиля блока кода. Дополнительные сведения см. в разделе Многострочный строковые литералы.

print program = ```
  public class Program {
    public static void Main() {
      System.Console.WriteLine("Hello!");
    }
  }```

Выходные данные

программа
public class Program { public static void Main() { System.Console.WriteLine("Hello!"); } }

Сцепленные строковые литералы

Все приведенные ниже выражения дают строку длиной 13. Дополнительные сведения см. в разделе Объединение разделенных строковых литерал.

print 
    none = strlen("Hello"', '@"world!"),
    whitespace = strlen("Hello" ', ' @"world!"),
    whitespaceAndComment = strlen("Hello" 
        // Comment
        ', '@"world!"
    );

Выходные данные

нет whitespace whitespaceAndComment
13 13 13

Замаскированный строковый литерал

В следующих выходных данных h запроса отображается строка. Однако в трассировке или телеметрии h строка заменяется звездочками. Дополнительные сведения см. в разделе Замаскированные строковые литералы.

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

Выходные данные

большой двоичный объект
https://contoso.blob.core.windows.net/container/blob.txt?sv=2012-02-12& se=2013-04-13T0...