---
title: Typy typesql
description: Dokumentacja typów skalarnych, złożonych, JSON, tabel, możliwości wartości null i typów maskowanych w typesql.
species: reference
---
# Typy typesql

typesql odzwierciedla fizyczne typy jeziora i dodaje typy złożone używane tylko w wyrażeniach. Typ opisuje wartość; nigdy jej nie zmienia.

## Typy skalarne

| Typ | Znaczenie |
|---|---|
| `boolean` | `true` lub `false` |
| `integer` | 64-bitowa liczba całkowita ze znakiem |
| `decimal(p, s)` | Dokładna liczba dziesiętna o precyzji do 38 |
| `float` | 64-bitowa wartość zmiennoprzecinkowa |
| `date` | Data kalendarzowa |
| `datetime` | Znacznik czasu bez przesunięcia, przechowywany z dokładnością do mikrosekundy |
| `datetimetz` | Chwila, przechowywana z dokładnością do mikrosekundy |
| `string` | Tekst UTF-8 |
| `json` | JSON bez zadeklarowanej struktury |
| `binary` | Wartość binarna przenoszona jako kanoniczny tekst base64 |

`unknown` oznacza, że moduł sprawdzający nie ma wystarczających dowodów. `never` reprezentuje ścieżkę, która nie może utworzyć wartości.

## Możliwość wartości null

Wartości jeziora mogą być null, chyba że katalog dostarczy aktualny dowód przeciwny. Końcowy znak `!` wymaga wartości innej niż null:

```typesql
select id satisfies string!
from titan.stripe.customers
where id is not null
```

Predykaty takie jak `is not null` zawężają wartości w prawidłowym zakresie przepływu. Rzutowanie nie dowodzi, że jego wynik jest różny od null.

## Typy złożone

Kolekcje używane w wyrażeniach mają postać `list<T>`, `struct{field: T}` i `map<K, V>`. Struktury tabel wskazują uporządkowane kolumny:

```typesql
with customer_totals(customer_id: string!, revenue: decimal(18, 2)) as (
  select customer, sum(amount) / 100.0
  from titan.stripe.charges
  group by customer
)
select * from customer_totals
```

## JSON ze strukturą

`json<{...}>` opisuje pola dostępne wewnątrz nośnika JSON, zachowując jego reprezentację w środowisku uruchomieniowym:

```typesql
select metadata satisfies json<{campaign: string, cohort: string}>
from titan.stripe.customers
```

Pakiety struktur konektorów mogą dostarczać te struktury pod nazwami, aby nie trzeba było powtarzać ich w każdym zapytaniu.

## Typy maskowane

`masked<T>` zapisuje proweniencję polityki kolumn. Nie można jej usunąć rzutowaniem, porównać jak zwykłej wartości ani scalić z niemaskowaną gałęzią. Niepowodzenia używają `TS0410` dla rzutowań, `TS0411` dla porównań i `TS0412` dla niebezpiecznego przepływu. Zgodne projekcje i `union all` zachowują otoczkę.
