你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

字符串数据类型

string 数据类型表示零个或多个 Unicode 字符的序列。

有关字符串查询运算符的信息,请参阅字符串运算符

注意

  • 在内部,字符串以 UTF-8 编码。 无效(非 UTF8)字符在引入时被替换为 U+FFFD Unicode 替换字符。
  • Kusto 没有与单个字符等效的数据类型。 单个字符表示为长度为 1 的字符串。
  • 引入 string 数据类型时,如果记录中的单一字符串值超过 1MB(使用 UTF-8 编码测量),则截断该值并且引入成功。 如果记录中的单一字符串值或整个记录超过允许的数据上限 64MB,则引入失败。

string 文本

可以使用双引号或单引号对查询文本中的字符串文本进行编码。 使用双引号时,必须使用反斜杠 () \ 对嵌套双引号字符进行转义。 使用单引号时,必须转义嵌套的单引号字符,并且不需要转义双引号。

使用反斜杠字符转义括引号字符、制表符 () \t 、换行符 () \n ,反斜杠本身 () \\

注意

换行符 (\n) ,返回字符 (\r) 必须括在引号中,除非使用 多行字符串文本

逐字字符串文本

也支持逐字字符串文本。 在此形式中,反斜杠字符 (\) 代表自身,不是转义字符。 将 @ 字符追加到字符串文本作为逐字标识符。 在逐字字符串文本中,双引号使用双引号进行转义,单引号使用单引号进行转义。

有关示例,请参阅 Verbatim 字符串

注意

换行符 (\n) ,返回字符 (\r) 必须括在引号中,除非使用 多行字符串文本

多行字符串文本

在文本的开头和结尾) ,通过“三重背杆和弦” (“来指示多行字符串文本。

有关示例,请参阅 多行字符串文本

注意

  • 多行字符串文本支持换行 () \n 并返回 (\r) 字符。
  • 多行字符串文本不支持转义字符。 类似于 逐字字符串文本
  • 多行字符串文本不支持 模糊处理

分隔字符串文本的串联

在 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}==

使用 Unicode 的字符串文本

以下示例显示,若要在字符串文本中包含 Unicode 字符,需要反斜杠。

print space = "Hello\u00A0World"

输出

space
Hello World

逐字字符串字面量

以下示例创建一个路径,其中反斜杠是路径的一部分,而不是转义字符。 为此,字符串 @ 符号将附加到字符串前面,从而创建 一个逐字字符串文本

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 类程序 { 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...'

输出

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