Слово для произнесения может храниться в файле размером в байтах, кавычки не учитываются при расчетах
Обновлено: 21.11.2024
В этом разделе описываются строковые/текстовые типы данных, включая двоичные строки, поддерживаемые в Snowflake, а также поддерживаемые форматы строковых констант/литералов.
В этой теме:
Типы данных для текстовых строк¶
Snowflake поддерживает следующие типы данных для текстовых (то есть символьных) строк.
VARCHAR¶
VARCHAR содержит символы Юникода.
При объявлении столбца типа VARCHAR можно указать необязательный параметр (N) , который представляет собой максимальное количество сохраняемых символов. Например:
Если длина не указана, по умолчанию используется максимально допустимая длина (16 777 216).
Хотя максимальная длина VARCHAR указывается в символах , максимальное количество VARCHAR также ограничено максимальным количеством байтов (16 777 216 (16 МБ)). Максимальное количество символов Unicode, которое может храниться в столбце VARCHAR, показано ниже:
От 8 388 608 (2 байта на символ) до 4 194 304 (4 байта на символ).
Например, если вы объявите столбец как VARCHAR(16777216), столбец может содержать не более 8 388 608 2-байтовых символов Юникода, даже если вы указали максимальную длину 1 6777216.
Столбец занимает место только для фактических данных. Например, односимвольная строка в столбце VARCHAR(16777216) занимает только один символ.
Нет никакой разницы в производительности при использовании объявления VARCHAR полной длины VARCHAR(16777216) или объявления меньшей длины. Обратите внимание, что в любой реляционной базе данных операторы SELECT, в которых предложение WHERE ссылается на столбцы VARCHAR или строковые столбцы, не так быстры, как операторы SELECT, отфильтрованные с использованием даты или числового условия столбца.
Некоторые инструменты BI/ETL определяют максимальный размер данных VARCHAR в хранилище или в памяти. Если вы знаете максимальный размер столбца, вы можете ограничить размер при добавлении столбца.
СИМВОЛ, СИМВОЛ¶
Синоним VARCHAR, за исключением того, что если длина не указана, по умолчанию используется CHAR(1).
В настоящее время Snowflake отличается от обычной семантики CHAR тем, что строки короче максимальной длины не дополняются пробелом в конце.
СТРОКА , ТЕКСТ¶
Синоним VARCHAR.
Примеры строк в столбцах таблицы¶
Типы данных для двоичных строк¶
Snowflake поддерживает следующие типы данных для двоичных строк.
ДВОИЧНЫЕ¶
Максимальная длина — 8 МБ (8 388 608 байт). В отличие от VARCHAR, тип данных BINARY не имеет представления о символах Юникода, поэтому длина всегда измеряется в байтах.
(Значения BINARY ограничены 8 МБ, поэтому они помещаются в пределах 16 МБ при преобразовании в шестнадцатеричные строки, например, с помощью TO_CHAR( , 'HEX') .)
Если длина не указана, по умолчанию используется максимальная длина.
VARBINARY¶
VARBINARY является синонимом BINARY.
Внутреннее представление¶
Когда Snowflake отображает ДВОИЧНЫЕ значения данных, Snowflake часто представляет каждый байт как 2 шестнадцатеричных символа. Например, слово «HELP» может отображаться как 48454C50 , где «48» — шестнадцатеричный эквивалент буквы «H» в кодировке ASCII (Unicode), «45» — шестнадцатеричное представление буквы «E» и т. д.< /p>
Дополнительную информацию о вводе и отображении ДВОИЧНЫХ данных см. в разделе Двоичный ввод и вывод .
Примеры двоичных файлов в столбцах таблицы¶
Строковые константы¶
Константы (также известные как литералы) относятся к фиксированным значениям данных. Строковые константы в Snowflake всегда должны быть заключены между символами-разделителями. Snowflake поддерживает использование одного из следующих способов разделения строковых констант:
Строковые константы в одинарных кавычках¶
Строковая константа может быть заключена в одинарные кавычки (например, «Это строка»). Чтобы включить символ одинарной кавычки в строковую константу, введите две смежные одинарные кавычки (например, '' ).
Две одинарные кавычки — это не то же самое, что символ двойной кавычки ( " ), который используется (при необходимости) для разделения идентификаторов объектов. Дополнительную информацию см. в разделе Требования к идентификаторам .
Escape-последовательности¶
Строковая константа в одинарных кавычках может включать символ одинарной кавычки (или другой специальный символ) с помощью управляющей последовательности. Символ обратной косой черты ( \ ) начинает escape-последовательность обратной косой черты.
Поскольку обратная косая черта является escape-символом, она не может использоваться сама по себе как буквальный символ. Чтобы использовать символ обратной косой черты в строковом литерале SQL, вы должны заменить символ обратной косой черты другим символом обратной косой черты. Например, чтобы включить один \ в строку, используйте \\ . Пример приведен ниже в этом разделе.
Escape-последовательности также можно использовать для вставки символов ASCII, указав числовое значение, соответствующее этому символу. Например, символ пробела может быть представлен как шестнадцатеричное число 20 (десятичное 32).
Существует три типа escape-последовательностей: простые, восьмеричные и шестнадцатеричные:
Escape-последовательность | Представленный символ | Простые управляющие последовательности |
---|---|
\' | Одна символ кавычки ( ' ) |
\" | Символ двойной кавычки ( " )< /p> |
\\ | Символ обратной косой черты ( \ ) |
\b | Символ возврата |
\f | Символ перевода страницы |
\n < /td> | Символ новой строки (перевода строки) |
\r | < p>Символ возврата каретки |
\t | Символ табуляции |
Восьмеричные управляющие последовательности | |
\ooo | Символ ASCII в восьмеричной системе счисления (т. е. где каждый o представляет восьмеричную цифру) |
Шестнадцатеричные управляющие последовательности | |
\x hh | Символ ASCII в шестнадцатеричной системе счисления (т. е. где каждый h представляет собой шестнадцатеричную цифру) |
Обратите внимание, что неспециальный символ, экранированный обратной косой чертой, просто интерпретируется как этот символ (например, '\z' становится 'z').
Строковые константы с долларовыми кавычками¶
Если строка содержит много символов кавычек, может быть проще заключать строковые константы в знаки доллара, а не в одинарные кавычки. Строковая константа в долларовых кавычках состоит из символов строки, окруженных парой знаков доллара ( $$ ).
Например, следующие строковые константы эквивалентны:
Строковая константа в долларовых кавычках может включать кавычки или любой другой символ без необходимости их экранирования. Содержимое строки всегда записывается буквально. Обратите внимание, что строковая константа не может содержать знаки двойного доллара.
В этом разделе описываются строковые/текстовые типы данных, включая двоичные строки, поддерживаемые в Snowflake, а также поддерживаемые форматы строковых констант/литералов.
В этой теме:
Типы данных для текстовых строк¶
Snowflake поддерживает следующие типы данных для текстовых (то есть символьных) строк.
VARCHAR¶
VARCHAR содержит символы Юникода.
При объявлении столбца типа VARCHAR можно указать необязательный параметр (N) , который представляет собой максимальное количество сохраняемых символов. Например:
Если длина не указана, по умолчанию используется максимально допустимая длина (16 777 216).
Хотя максимальная длина VARCHAR указывается в символах , максимальное количество VARCHAR также ограничено максимальным количеством байтов (16 777 216 (16 МБ)). Максимальное количество символов Unicode, которое может храниться в столбце VARCHAR, показано ниже:
От 8 388 608 (2 байта на символ) до 4 194 304 (4 байта на символ).
Например, если вы объявите столбец как VARCHAR(16777216), столбец может содержать не более 8 388 608 2-байтовых символов Юникода, даже если вы указали максимальную длину 1 6777216.
Столбец занимает место только для фактических данных. Например, односимвольная строка в столбце VARCHAR(16777216) занимает только один символ.
Нет никакой разницы в производительности при использовании объявления VARCHAR полной длины VARCHAR(16777216) или объявления меньшей длины. Обратите внимание, что в любой реляционной базе данных операторы SELECT, в которых предложение WHERE ссылается на столбцы VARCHAR или строковые столбцы, не так быстры, как операторы SELECT, отфильтрованные с использованием даты или числового условия столбца.
Некоторые инструменты BI/ETL определяют максимальный размер данных VARCHAR в хранилище или в памяти. Если вы знаете максимальный размер столбца, вы можете ограничить размер при добавлении столбца.
СИМВОЛ, СИМВОЛ¶
Синоним VARCHAR, за исключением того, что если длина не указана, по умолчанию используется CHAR(1).
В настоящее время Snowflake отличается от обычной семантики CHAR тем, что строки короче максимальной длины не дополняются пробелом в конце.
СТРОКА , ТЕКСТ¶
Синоним VARCHAR.
Примеры строк в столбцах таблицы¶
Типы данных для двоичных строк¶
Snowflake поддерживает следующие типы данных для двоичных строк.
ДВОИЧНЫЕ¶
Максимальная длина — 8 МБ (8 388 608 байт). В отличие от VARCHAR, тип данных BINARY не имеет представления о символах Юникода, поэтому длина всегда измеряется в байтах.
(Значения BINARY ограничены 8 МБ, поэтому они помещаются в пределах 16 МБ при преобразовании в шестнадцатеричные строки, например, с помощью TO_CHAR( , 'HEX') .)
Если длина не указана, по умолчанию используется максимальная длина.
VARBINARY¶
VARBINARY является синонимом BINARY.
Внутреннее представление¶
Когда Snowflake отображает ДВОИЧНЫЕ значения данных, Snowflake часто представляет каждый байт как 2 шестнадцатеричных символа.Например, слово «HELP» может отображаться как 48454C50 , где «48» — шестнадцатеричный эквивалент буквы «H» в кодировке ASCII (Unicode), «45» — шестнадцатеричное представление буквы «E» и т. д.< /p>
Дополнительную информацию о вводе и отображении ДВОИЧНЫХ данных см. в разделе Двоичный ввод и вывод .
Примеры двоичных файлов в столбцах таблицы¶
Строковые константы¶
Константы (также известные как литералы) относятся к фиксированным значениям данных. Строковые константы в Snowflake всегда должны быть заключены между символами-разделителями. Snowflake поддерживает использование одного из следующих способов разделения строковых констант:
Строковые константы в одинарных кавычках¶
Строковая константа может быть заключена в одинарные кавычки (например, «Это строка»). Чтобы включить символ одинарной кавычки в строковую константу, введите две смежные одинарные кавычки (например, '' ).
Две одинарные кавычки — это не то же самое, что символ двойной кавычки ( " ), который используется (при необходимости) для разделения идентификаторов объектов. Дополнительную информацию см. в разделе Требования к идентификаторам .
Escape-последовательности¶
Строковая константа в одинарных кавычках может включать символ одинарной кавычки (или другой специальный символ) с помощью управляющей последовательности. Символ обратной косой черты ( \ ) начинает escape-последовательность обратной косой черты.
Поскольку обратная косая черта является escape-символом, она не может использоваться сама по себе как буквальный символ. Чтобы использовать символ обратной косой черты в строковом литерале SQL, вы должны заменить символ обратной косой черты другим символом обратной косой черты. Например, чтобы включить один \ в строку, используйте \\ . Пример приведен ниже в этом разделе.
Escape-последовательности также можно использовать для вставки символов ASCII, указав числовое значение, соответствующее этому символу. Например, символ пробела может быть представлен как шестнадцатеричное число 20 (десятичное 32).
Существует три типа escape-последовательностей: простые, восьмеричные и шестнадцатеричные:
Escape-последовательность | Представленный символ | Простые управляющие последовательности |
---|---|
\' | Одна символ кавычки ( ' ) |
\" | Символ двойной кавычки ( " )< /p> |
\\ | Символ обратной косой черты ( \ ) |
\b | Символ возврата |
\f | Символ перевода страницы |
\n < /td> | Символ новой строки (перевода строки) |
\r | < p>Символ возврата каретки |
\t | Символ табуляции |
Восьмеричные управляющие последовательности | |
\ooo | Символ ASCII в восьмеричной системе счисления (т. е. где каждый o представляет восьмеричную цифру) |
Шестнадцатеричные управляющие последовательности | |
\x hh | Символ ASCII в шестнадцатеричной системе счисления (т. е. где каждый h представляет собой шестнадцатеричную цифру) |
Обратите внимание, что неспециальный символ, экранированный обратной косой чертой, просто интерпретируется как этот символ (например, '\z' становится 'z').
Строковые константы с долларовыми кавычками¶
Если строка содержит много символов кавычек, может быть проще заключать строковые константы в знаки доллара, а не в одинарные кавычки. Строковая константа в долларовых кавычках состоит из символов строки, окруженных парой знаков доллара ( $$ ).
Например, следующие строковые константы эквивалентны:
Строковая константа в долларовых кавычках может включать кавычки или любой другой символ без необходимости их экранирования. Содержимое строки всегда записывается буквально. Обратите внимание, что строковая константа не может содержать знаки двойного доллара.
Информация проходит через приложение небольшими дискретными значениями, очень похожими на ячейки электронной таблицы. Например, данные в полях «День рождения» и «Годовщина» будут передаваться как значение «Дата», которое включает год, месяц и день. Приложение знает, как форматировать эти значения, ограничивать ввод тем, что подходит для каждого из них, и делиться значениями с базой данных. Дни рождения отличаются от годовщин для людей, но система обрабатывает их точно так же. В этом случае Date является примером типа данных.
В этой статье подробно описаны типы данных, поддерживаемые приложениями на основе холста. Когда приложение подключается к внешнему источнику данных, каждый тип данных в этом источнике сопоставляется с типом данных для приложений на основе холста.
Многие из этих типов данных похожи и имеют одинаковое базовое представление, например, поле гиперссылки рассматривается как текст. Дополнительные типы данных улучшают работу форм и других элементов управления по умолчанию.
Пусто
Все типы данных могут иметь значение пусто (другими словами, без значения). Для этого понятия в базах данных часто используется термин "null".
Используйте функцию Blank с функцией Set или Patch, чтобы сделать переменную или поле пустой. Например, Set( x, Blank() ) удаляет любое значение глобальной переменной x.
Проверить значение пустое с помощью функции IsBlank. Замените возможные пустые значения непустыми значениями с помощью функции Coalesce.
Поскольку все типы данных поддерживают blank, типы данных Boolean и Two option фактически имеют три возможных значения.
Текст, гиперссылка, изображение и мультимедиа
Все четыре типа данных основаны на текстовой строке Unicode.
Встроенный текст
Встроенные в формулу текстовые строки заключаются в двойные кавычки. Используйте две двойные кавычки вместе, чтобы представить одну двойную кавычку в текстовой строке. Например, используя следующую формулу в свойстве OnSelect элемента управления Button:
при нажатии кнопки появляется баннер, в котором первая и последняя двойные кавычки опущены (поскольку они ограничивают текстовую строку), а вокруг Hello, World! повторяются двойные кавычки. заменяются одинарной двойной кавычкой:
Одинарные кавычки не используются для имен идентификаторов, которые содержат специальные символы и не имеют значения в текстовой строке.
Изображения и мультимедийные ресурсы
В меню «Файл» вы можете добавлять изображения, видео и аудиофайлы в качестве ресурсов приложения. Имя импортированного файла становится именем ресурса в приложении. На этом рисунке логотип Northwind Traders, который называется nwindlogo, был добавлен в приложение:
Чтобы использовать этот ресурс в приложении, укажите его в свойстве Image элемента управления Image:
URI для изображений и других медиафайлов
Вы можете углубиться в этот последний пример, задав для свойства Text элемента управления Label значение nwindlogo. Метка показывает текстовую строку:
Приложения на основе холста ссылаются на каждое изображение или другой мультимедийный файл, независимо от того, находится ли он в облаке или добавлен в качестве ресурса приложения, с помощью текстовой строки URI.
Например, свойство Image элемента управления изображением принимает не только ресурсы приложения, но и ссылки на изображения в Интернете, например "https://northwindtraders.com/logo.jpg". Свойство также принимает встроенные изображения, использующие схему URI данных, как в этом примере:
Этот URI отображает увеличенную версию двух фиолетовых ромбов:
Вы можете отобразить самое последнее изображение, снятое в элементе управления "Камера", если для свойства Image элемента управления изображением установить свойство Photo элемента управления камерой. Приложение хранит изображение в памяти, а свойство Photo элемента управления камерой возвращает ссылку URI на изображение. Например, вы можете сделать снимок, и свойство Photo камеры может вернуть «appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1».
Вы используете URI для ссылки на изображение или другой мультимедийный файл, хранящийся в базе данных. Таким образом, приложение не извлекает фактические данные, пока они действительно не понадобятся. Например, вложение в таблице Microsoft Dataverse может возвращать «appres://datasources/Contacts/table/». Как и в примере с камерой, вы можете отобразить это изображение, задав для свойства Image элемента управления изображение эту ссылку, которая извлекает двоичные данные.
Когда вы сохраняете тип медиаданных, например изображение, в базу данных, приложение отправляет фактическое изображение или медиаданные, а не ссылку URI.
Ограничения по размеру
Как и текстовые строки и URI, эти типы данных не имеют предустановленных ограничений на длину.
Двоичные данные, на которые ссылаются эти типы данных, также не имеют предустановленного ограничения на размер. Например, изображение, снятое с помощью элемента управления камерой, которое теперь обозначается как «appres://.», может иметь такое большое и высокое разрешение, какое может обеспечить камера устройства. Разрешение, частота кадров и другие атрибуты медиафайлов не ограничиваются типом данных, но определенные элементы управления для воспроизведения и захвата медиафайлов могут иметь свои собственные ограничения.
Однако все размеры данных зависят от объема доступной памяти в приложении. Браузеры, работающие на настольном компьютере, обычно поддерживают более 100 мегабайт данных.Однако объем доступной памяти на таком устройстве, как телефон, может быть намного меньше, обычно в диапазоне 30–70 мегабайт. Чтобы определить, будет ли ваше приложение работать в этих пределах, протестируйте распространенные сценарии на всех устройствах, на которых оно должно работать.
Рекомендуется хранить данные в памяти ровно столько, сколько необходимо. Загружайте изображения в базу данных, как только сможете; загружать изображения только тогда, когда их запрашивает пользователь приложения.
Число и валюта
Типы данных "Число" и "Валюта" используют стандарт двойной точности с плавающей запятой IEEE 754. Этот стандарт обеспечивает очень широкий диапазон чисел для работы, от –1,79769 x 10 308 до 1,79769 x 10 308 . Наименьшее значение, которое может быть представлено, равно 5 x 10 –324 .
Арифметика с плавающей запятой является приблизительной, поэтому иногда она может давать неожиданные результаты во многих задокументированных примерах. Вы можете ожидать, что формула 55/100 * 100 вернет ровно 55, а (55/100 * 100) - 55 вернет ровно ноль. Однако последняя формула возвращает 7,1054 x 10 –15 , что очень мало, но не равно нулю. Эта крошечная разница обычно не вызывает проблем, и приложение округляет ее при отображении результата. Однако небольшие расхождения могут усугубляться в последующих расчетах и давать неверный ответ.
Системы баз данных часто хранят валюты и выполняют вычисления с использованием десятичной математики, которая предлагает меньший диапазон, но больший контроль над точностью. По умолчанию приложения на основе холста сопоставляют валюты со значениями с плавающей запятой и из них; поэтому результат может отличаться от вычислений, выполненных в родном десятичном типе данных. Если этот тип несоответствия вызовет проблемы, вы можете работать с этими значениями как с текстом, точно так же, как вы могли бы работать с большими целыми числами, описанными ранее в этом разделе.
Дата, время и дата/время
Часовые пояса
Значения даты/времени относятся к следующим категориям:
- Локальный пользователь: эти значения хранятся в формате UTC (всемирное скоординированное время), но часовой пояс пользователя приложения влияет на то, как приложение отображает эти значения и как пользователь приложения их указывает. Например, один и тот же момент отображается для пользователя из Канады иначе, чем для пользователя из Японии.
- Независимый от часового пояса: приложение показывает эти значения одинаково, и пользователь приложения указывает их одинаково, независимо от часового пояса. Один и тот же момент отображается для пользователя в Канаде так же, как и для пользователя в Японии. Авторы приложений, которые не ожидают, что их приложения будут работать в разных часовых поясах, используют эти значения, потому что в целом они проще.
В этой таблице приведены некоторые примеры:
Тип даты/времени | Значение, хранящееся в базе данных | Отображаемое и введенное значение в 7 часах западнее UTC | Отображаемое и введенное значение на 4 часа восточнее UTC |
---|---|---|---|
Локальный пользователь | Воскресенье, 19 мая 2019 г. 4:00 | Суббота, 18 мая 2019 г. 21:00 | Воскресенье, 19 мая 2019 г. 8:00 |
Часовой пояс не зависит | Воскресенье, 19 мая 2019 г. 4:00 AM | Воскресенье, 19 мая 2019 г. 4:00 | Воскресенье, 19 мая 2019 г. 4:00 |
Для локальной даты/времени пользователя приложения на основе холста используют часовой пояс браузера или устройства, а приложения на основе модели используют пользовательские настройки в Dataverse. Эти настройки обычно совпадают, но результаты будут отличаться, если эти настройки различаются.
Используйте функции DateAdd и TimeZoneInformation для преобразования местного времени в формат UTC и обратно. См. примеры в конце документации по этим функциям.
Числовые эквиваленты
Приложения на основе холста хранят и вычисляют все значения даты и времени, независимо от того, являются ли они локальными для пользователя или независимыми от часового пояса в формате UTC. Приложение преобразует значения в зависимости от часового пояса пользователя приложения при их отображении и при указании пользователем приложения.
Когда приложение на основе холста считывает независимое от часового пояса значение из источника данных или записывает такое значение в источник данных, приложение автоматически корректирует значение, чтобы компенсировать часовой пояс пользователя приложения. Затем приложение обрабатывает это значение как значение в формате UTC, согласующееся со всеми другими значениями даты и времени в приложении. Из-за этой компенсации исходное значение, не зависящее от часового пояса, появляется, когда приложение корректирует значение UTC для часового пояса пользователя приложения.
Вы можете более внимательно наблюдать за этим поведением, используя функцию Value для доступа к базовому числовому значению для значения даты/времени. Эта функция возвращает значение даты/времени в виде количества миллисекунд с 00:00:00,000 UTC 1 января 1970 года.
Поскольку все значения даты/времени хранятся в формате UTC, формула Значение( Дата( 1970, 1, 1 )) не будет возвращать ноль в большинстве регионов мира, поскольку функция Date возвращает дату в формате UTC. Например, формула вернет 28 800 000 в часовом поясе, смещенном от UTC на восемь часов. Это число отражает количество миллисекунд в восьми часах.
Возвращаясь к нашему примеру выше:
Тип даты/времени | Значение, хранящееся в базе данных | Отображаемое и введенное значение в 7 часах западнее UTC | Функция значения возвращает |
---|---|---|---|
Локальный пользователь | Воскресенье, 19 мая 2019 г. 4:00 td> | Суббота, 18 мая 2019 г. 21:00 | 1 558 238 400 000 (воскресенье, 19 мая 2019 г. 4:00 UTC) td> |
Часовой пояс не зависит | Воскресенье, 19 мая 2019 г. 4:00 AM | Воскресенье, 19 мая 2019 г.< br />4:00 AM | 1 558 263 600 000 (воскресенье, 19 мая 2019 г. 11:00 UTC) |