Sdílet prostřednictvím


Datový typ řetězce

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Datový string typ představuje posloupnost nulových nebo více znaků Unicode .

Informace o operátorech řetězcového dotazu naleznete v tématu Řetězcové operátory.

Poznámka:

  • Interně jsou řetězce kódovány v UTF-8. Neplatné znaky (jiné než UTF8) se nahradí náhradními znaky kódování U+FFFD Unicode při příjmu dat.
  • Kusto nemá žádný datový typ, který je ekvivalentní jednomu znaku. Jeden znak je reprezentován jako řetězec délky 1.
  • Při ingestování datového string typu, pokud jedna řetězcová hodnota v záznamu překročí 1 MB (měřeno pomocí kódování UTF-8), hodnota se zkrátí a příjem dat proběhne úspěšně. Pokud jedna řetězcová hodnota v záznamu nebo celý záznam překročí povolený limit dat 64 MB, příjem dat selže.
  • Při ingestování datového string typu, pokud jedna řetězcová hodnota v záznamu překročí 1 MB (měřeno pomocí kódování UTF-8), hodnota se zkrátí a příjem dat proběhne úspěšně. Sloupec můžete zvýšit MaxValueSize změnou zásad kódování.
  • Pokud jedna řetězcová hodnota v záznamu nebo celý záznam překročí povolený limit dat 64 MB, příjem dat selže.

string Literály

Řetězcový literál je řetězec uzavřený v uvozovkách. K kódování řetězcových literálů v textu dotazu můžete použít dvojité uvozovky nebo jednoduché uvozovky. U dvojitýchuch\ U jednoduchých uvozovek musíte uvozovat vnořené jednoduché uvozovky a nemusíte uvozovat dvojité uvozovky.

Pomocí znaku zpětného lomítka uvozovky uvozovky, znaků tabulátoru (\t), znaků nového řádku (\n) a samotného zpětného lomítka (\\).

Poznámka:

Znak nového řádku () a návratový znak (\n\r) musí být uzavřen v uvozovkách, pokud nepoužíváte víceřádkové řetězcové literály.

Doslovné řetězcové literály

Doslovné řetězcové literály jsou řetězcové literály předem oddělené znakem @ , které slouží jako doslovný identifikátor. V této podobě znak zpětného lomítka (\) představuje sám sebe a není řídicím znakem. V doslovných řetězcových literálech se uvozovky uvozovek uvozovek uvozovek s jednoduchými uvozovkami.

Příklad najdete v části Doslovný řetězec.

Poznámka:

Znak nového řádku () a návratový znak (\n\r) musí být uzavřen v uvozovkách, pokud nepoužíváte víceřádkové řetězcové literály.

Víceřádkové řetězcové literály

Označte víceřádkové řetězcové literály "trojitým zpětným akordem" (''' na začátku a konci literálu.

Příklad najdete v tématu Literál víceřádkového řetězce.

Poznámka:

  • Víceřádkové řetězcové literály podporují nové řádky (\n) a návratové (\r) znaky.
  • Víceřádkové řetězcové literály nepodporují řídicí znaky. Podobá se doslovné řetězcové literály.
  • Víceřádkové řetězcové literály nepodporují obfuskaci.

Zřetězení oddělených řetězcových literálů

Pokud dva nebo více sousedních řetězcových literálů nemá v dotazu Kusto žádné oddělení, automaticky se zkombinují tak, aby vytvořily nový řetězcový literál. Podobně platí, že pokud jsou řetězcové literály oddělené pouze prázdnými znaky nebo komentáři, jsou také sloučeny tak, aby vytvořily nový řetězcový literál.

Příklad najdete v tématu Zřetězené řetězcové literály.

Obfuskované řetězcové literály

Dotazy se ukládají pro telemetrii a analýzu. Pokud chcete chránit citlivé informace, jako jsou hesla a tajné kódy, můžete řetězec označit jako obfuskovaný řetězcový literál. Tyto označené řetězce jsou protokolovány v obfuskované podobě nahrazeny hvězdičkami (*) v textu dotazu.

Obfuskovaný řetězcový literál je vytvořen h H předem před literálem řetězce nebo znakem před standardním nebo doslovným řetězcovým literálem.

Příklad najdete v tématu Obfuscated řetězcový literál.

Důležité

Označte všechny řetězcové literály, které obsahují tajné informace, jako obfuskované řetězcové literály.

Tip

V některých situacích obsahuje tajné informace pouze část řetězcového literálu. V takových případech rozdělte literál na část, která není tajná, a tajnou část. Pak označte jenom tajnou část jako obfuskovanou.

Příklady

Řetězcový literál s uvozovkami

Následující příklad ukazuje, jak používat uvozovky v řetězcových literálech zahrnujících jednoduché uvozovky a dvojité uvozovky. Další informace naleznete v tématu Řetězcové literály.

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

Výstup

s1 s2
řetězec s "dvojitými uvozovkami" řetězec s "jednoduchými uvozovkami"

Řetězcový literál s zpětným lomítkem escaping

Následující příklad vytvoří vzor regulárního výrazu pomocí zpětných lomítek k řídicím speciálním znakům. Další informace naleznete v tématu Řetězcové literály.

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

Výstup

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

Řetězcový literál s kódováním Unicode

Následující příklad ukazuje, že zpětné lomítko je potřeba k zahrnutí znaku Unicode do řetězcového literálu.

print space = "Hello\u00A0World"

Výstup

mezera
Hello World

Doslovný řetězcový literál

Následující příklad vytvoří cestu, ve které jsou zpětná lomítka součástí cesty místo řídicích znaků. K tomu se před řetězcem předepíše znaménko řetězce @ a vytvoří doslovný řetězcový literál.

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

Výstup

myPath
C:\Folder\filename.txt

Literál víceřádkového řetězce

Následující příklad ukazuje syntaxi víceřádkového řetězcového literálu, který používá nové řádky a tabulátory k vytvoření stylu bloku kódu. Další informace naleznete v tématu Víceřádkové řetězcové literály.

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

Výstup

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

Zřetězené řetězcové literály

Následující výrazy poskytují řetězec o délce 13. Další informace naleznete v tématu Zřetězení oddělených řetězcových literálů.

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

Výstup

Žádná prázdný znak prázdný znakAndComment
13 13 13

Obfuskovaný řetězcový literál

Ve výstupu h následujícího dotazu se ve výsledcích zobrazí řetězec. V trasování nebo telemetrii h je však řetězec uložen v obfuskované podobě a nahrazen hvězdičkami v protokolu. Další informace najdete v tématu Obfuscated řetězcové literály.

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

Výstup

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