W języku definicji danych bazy danych Snowflake, gdy określam kolumnę VARCHAR(10), jaka jest jednostka miary długości "10"? Czy to liczba bajtów lub liczby znaków?

Oznacza to, że jeśli chcę zapisać pojedynczy, 4-bajtowy znak, czy muszę określić VARCHAR(1) lub VARCHAR(4)?

Patrzę na dokumentację tutaj, HTTPS: // Docs .SnowFlake.net / instrukcje / SQL-Reference / Data-Type-Text.html i widzę

Maksymalna liczba znaków Unicode, które można przechowywać w kolumnie Varchar, zależy od tego, czy znaki są pojedynczeszkodawcze lub MULTIBYTE:

I

Jeśli długość nie jest określona, domyślnie jest maksymalna długość.

I

Płatek śniegu odbiega obecnie od wspólnych semantyków charowych w tym strumyk krótszych niż maksymalna długość nie są w końcu wyściełane przestrzeń.

Ale nadal nie jestem pewien, co jest jednostka miary spekującej długości.

2
Kirby 17 grudzień 2019, 01:57

1 odpowiedź

Najlepsza odpowiedź

To postacie, w przeciwieństwie do bajtów lub punktów kodekcyjnych. Oto prosty przykład:

create table t (x varchar(1)) as select '123' AS x;

String '123' is too long and would be truncated

Przeciw:

create or replace table t (x varchar(1)) as select '😊' AS x;

Table T successfully created.

Uśmiechnięta twarz Unicode znak jest U+1F60A, co jest czymś więcej niż jednym bajtem.

3
Elliott Brossard 16 grudzień 2019, 23:45