Sql types: SQL Data Types for MySQL, SQL Server, and MS Access

Документация JDK 20 — Главная

  1. Главная
  2. Ява
  3. Java SE
  4. 20

Обзор

  • Прочтите меня
  • Примечания к выпуску
  • Что нового
  • Руководство по миграции
  • Загрузить JDK
  • Руководство по установке
  • Формат строки версии

Инструменты

  • Технические характеристики инструментов JDK
  • Руководство пользователя JShell
  • Руководство по JavaDoc
  • Руководство пользователя средства упаковки

Язык и библиотеки

  • Обновления языка
  • Основные библиотеки
  • HTTP-клиент JDK
  • Учебники по Java
  • Модульный JDK
  • Руководство программиста API бортового регистратора
  • Руководство по интернационализации

Технические характеристики

  • Документация API
  • Язык и ВМ
  • Имена стандартных алгоритмов безопасности Java
  • банок
  • Собственный интерфейс Java (JNI)
  • Инструментальный интерфейс JVM (JVM TI)
  • Сериализация
  • Проводной протокол отладки Java (JDWP)
  • Спецификация комментариев к документации для стандартного доклета
  • Прочие характеристики

Безопасность

  • Руководство по безопасному кодированию
  • Руководство по безопасности

Виртуальная машина HotSpot

  • Руководство по виртуальной машине Java
  • Настройка сборки мусора

Управление и устранение неполадок

  • Руководство по устранению неполадок
  • Руководство по мониторингу и управлению
  • Руководство по JMX

Client Technologies

  • Руководство по специальным возможностям Java

Сопоставление типов данных между SQL и языками обработчиков

Написанная вами хранимая процедура или определяемая пользователем функция вызывается из SQL и таким образом получает и возвращает значения в типах данных SQL. Однако,
его базовый обработчик будет использовать типы данных из языка обработчика, такого как Java, Python или Scala. Во время выполнения Snowflake преобразует
между типами SQL и типами обработчиков для аргументов и возвращаемых значений.

Обратите внимание, что Snowflake выполняет эти преобразования также в следующих случаях:

В этом разделе описываются допустимые сопоставления между данными и типами SQL и поддерживаемыми языками обработчиков. Используйте этот контент, чтобы выбрать
типы данных при написании обработчика.

Сведения о типах данных Snowflake SQL см. в разделе Сводка типов данных.

Сопоставления типов данных SQL-Java

В таблице ниже показаны сопоставления типов между SQL и Java. Эти отображения обычно применяются к обоим аргументам
передаваемые процедуре или функции и возвращаемые из них значения. Однако есть некоторые исключения, которые перечислены
в сносках.

Обратите внимание, что некоторые типы данных SQL (например, NUMBER) совместимы с несколькими типами данных Java (например, int , long и т. д.). В этих случаях,
вы можете использовать любой тип данных Java, который имеет достаточную емкость для хранения фактических значений, которые будут переданы. Если вы
передать значение SQL несовместимому типу данных Java (или наоборот), Snowflake выдает ошибку.

Тип SQL

Тип Java

Примечания

МАССИВ

Строка[]

Форматирует элементы массива как строки.

МАССИВ

Строка

Форматирует массив как строку JSON (например, [1, "foo", null] ).

ДВОИЧНЫЙ

байт[]

ДВОИЧНЫЙ

Строка

Кодирует двоичную строку в шестнадцатеричном формате. 4

ДВОИЧНЫЙ

Входной поток

Представляет значение BINARY как последовательность байтов.

Логический

логический

Не может быть нулевым.

Логический

Логический

Логический

Строка

4

ДАТА

java.sql.Дата

ДАТА

Строка

Форматирует дату как ГГГГ-ММ-ДД . 4

ПОПЛАВОК

двойной

Не может быть нулевым.

ПОПЛАВОК

Двойной

ПОПЛАВОК

поплавок

Не может быть нулевым. Может привести к потере точности.

ПОПЛАВОК

Поплавок

Может привести к потере точности.

ПОПЛАВОК

Строка

Может привести к потере точности (преобразование с плавающей запятой в строку с потерями).

ГЕОГРАФИЯ

Строка

Форматирует географию как GeoJSON .

ГЕОГРАФИЯ

География

5

НОМЕР

короткий

Не может быть нулевым. Должен соответствовать диапазону коротких (без дробной части, а целая часть не может превышать максимальное/минимальное значение short).

НОМЕР

Короткий

Должен соответствовать диапазону коротких (без дробной части, а целая часть не может превышать максимальное/минимальное значение short).

НОМЕР

внутр.

Не может быть нулевым. Должен соответствовать диапазону int (без дробной части, а целая часть не может превышать максимальное/минимальное значение int).

НОМЕР

Целое число

Должен вписываться в диапазон значений int (без дробной части, а целая часть не может превышать значения max/min int).

НОМЕР

длинный

Не может быть нулевым. Должен соответствовать диапазону long (без дробной части, а целая часть не может превышать максимальное/минимальное значение long).

НОМЕР

Длинный

Должен соответствовать диапазону long (без дробной части, а целая часть не может превышать значения max/min long).

НОМЕР

java. math.BigDecimal

НОМЕР

java.math.BigInteger

Должен соответствовать диапазону BigInteger (без дробной части).

НОМЕР

Строка

ОБЪЕКТ

Карта

Ключи карты являются ключами объекта, а значения отформатированы как строки.

ОБЪЕКТ

Строка

Форматирует объект как строку JSON (например, {"x": 3, "y": true} ).

ВРЕМЯ

java.sql.Время

3

ВРЕМЯ

Строка

Форматирует время как HH:MI:SS.SSSSSSSSS , где доля секунды зависит от точности времени. 3

TIMESTAMP_LTZ

java. sql.Timestamp

Должен соответствовать диапазону java.sql.Timestamp. 3

TIMESTAMP_LTZ

Строка

Выходной формат ДГ, ДД ПН ГГГГ Чч34:МИ:СС ТЖТЗМ . 1 , 3 , 4

TIMESTAMP_NTZ

java.sql.Timestamp

Должен соответствовать диапазону java.sql.Timestamp. Рассматривает время настенных часов как смещение от эпохи Unix (фактически накладывая часовой пояс UTC). 3

TIMESTAMP_NTZ

Строка

Рассматривает время настенных часов как смещение от эпохи Unix (фактически накладывая часовой пояс UTC). Выходной формат ДГ, ДД ПН ГГГГ ЧЧ:МИ:СС . 2 , 3 , 4

TIMESTAMP_TZ

java.sql.Timestamp

Должен соответствовать диапазону java. sql.Timestamp. 3

TIMESTAMP_TZ

Строка

Выходной формат: ДГ, ДД МЕС ГГГГ Чч34:МИ:СС ТЖТЗМ . 1 , 3 , 4

ВАРЧАР

Строка

ВАРИАНТ

Вариант

Тип данных Variant — это класс в пакете Snowpark. Дополнительные сведения см. в разделе Типы пакетов Snowpark, поддерживаемые пользовательскими функциями. Пример см. в разделе «Передача значения VARIANT во встроенную пользовательскую функцию Java».

1(1,2)

Формат соответствует формату временной метки Интернета (RFC) DY, DD MON YYYY Hh34:MI:SS TZHTZM , как описано в Форматах меток времени. Если присутствует смещение часового пояса (компонент TZHTZM ), оно обычно представляет собой цифры (например, -0700 указывает на 7 часов от UTC). Если смещение часового пояса составляет Z (для «Zulu»), а не цифры, это синоним «+0000» (UTC).

2

Формат соответствует формату временной метки Интернета (RFC) DY, DD MON YYYY Hh34:MI:SS , как описано в разделе Форматы временной метки. Если за строкой следует пробел и Z (для «Zulu»), что явно указывает, что смещение равно «+0000» (UTC).

3(1,2,3,4,5,6,7,8)

Хотя Snowflake может хранить значения времени с точностью до наносекунды, библиотека java.sql.time поддерживает точность только до миллисекунды. Преобразование между типами данных Snowflake и Java может снизить эффективную точность до миллисекунд.

4(1,2,3,4,5,6)

Это сопоставление типов поддерживается при преобразовании аргументов SQL в формат Java, но не при преобразовании возвращаемых типов Java в типы SQL.

5

Java не имеет собственного типа данных Geography. Упомянутый здесь тип данных Geography является классом в пакете Snowpark. Дополнительные сведения см. в разделе Типы пакетов Snowpark, поддерживаемые пользовательскими функциями.

Массивы

Пользовательские функции Java могут принимать массивы любого из следующих типов данных Java:

Тип данных

Примечания

Строка

логический

МАССИВ Snowflake должен содержать только логические элементы и не должен содержать значений NULL.

двойной

поплавок

МАССИВ Snowflake должен содержать одно из следующих значений и не должен содержать значений NULL.

внутр.

длинный

короткий

Массив снежинок должен содержать только элементы с фиксированной точкой с масштабом 0 и
не должен содержать значений NULL.

Значения NULL

Snowflake поддерживает два разных значения NULL: SQL NULL и VARIANT JSON null . (Для получения информации о Снежинке
VARIANT NULL, см. значения NULL.)

Java поддерживает один значение null , которое предназначено только для непримитивных типов данных.

Аргумент SQL NULL для обработчика Java преобразуется в значение Java null , но только для типов данных Java, которые
поддержка ноль .

Возвращенное значение Java null преобразуется обратно в SQL NULL .

TIMESTAMP_LTZ Значения и часовые пояса

Пользовательская функция Java в значительной степени изолирована от среды, в которой она вызывается. Однако часовой пояс наследуется от
вызывающая среда. Если сеанс вызывающей стороны устанавливает часовой пояс по умолчанию перед вызовом пользовательской функции Java, тогда
UDF имеет тот же часовой пояс по умолчанию. Java UDF использует те же данные базы данных часовых поясов IANA, что и собственный TIMEZONE.
Использует Snowflake SQL (т. е. данные из версии 2021a базы данных часовых поясов).

Типы пакетов Snowpark, поддерживаемые для пользовательских функций

В пользовательской функции можно использовать определенное подмножество типов, включенных в пакет Snowflake.
Сноупарк Java-пакет. Хотя эти типы
разработанные для использования в коде Snowpark, некоторые также поддерживаются для использования в UDF для удобства, которое они могут предоставить. (Подробнее о
Snowpark, см. документацию Snowpark.)

Примечание

Библиотека Snowpark необходима для хранимых процедур, написанных на Java, Python и Scala. В результате вы можете использовать типы Snowpark
там без ограничений.

Типы Snowpark в следующей таблице поддерживаются в коде UDF. Вы не должны использовать другие типы Snowpark в коде UDF; они не
поддерживается там.

Тип сноупарка

Требуется версия Snowpark

Описание

География

1. 2.0 и выше

Представляет тип Snowflake GEOGRAPHY. Для примера, который использует Тип данных Geography , см. Передача значения GEOGRAPHY во встроенную пользовательскую функцию Java.

Вариант

1.4.0 и выше

Представляет данные Snowflake VARIANT. Пример, в котором используется тип данных Variant , см. в разделе Передача значения VARIANT во встроенную пользовательскую функцию Java.

Указание пакета Snowpark в качестве зависимости

При разработке кода UDF, использующего пакет Snowpark, вам необходимо настроить среду разработки, чтобы вы могли компилировать и
запускать код с зависимостями Snowpark. Дополнительные сведения см. в разделе «Настройка других сред разработки для Snowpark Java».

При развертывании UDF путем выполнения оператора CREATE FUNCTION можно указать Snowpark
package как зависимость без загрузки JAR-файла на сцену (библиотека уже есть в Snowflake). Для этого укажите пакет
имя и версия в пункте PACKAGES . Пример синтаксиса см. в разделе Передача значения GEOGRAPHY во встроенную пользовательскую функцию Java.

Сопоставления типов данных SQL-JavaScript

В следующей таблице показаны типы данных Snowflake SQL и соответствующие типы данных JavaScript:

Тип данных SQL

Тип данных JavaScript

Примечания

МАССИВ

JSON

Логический

логический

ДАТА

дата

REAL, FLOAT, FLOAT8, FLOAT4, DOUBLE, DOUBLE PRECISION

номер

ВРЕМЯ

струна

TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ

дата или SfDate

Когда временная метка передается в качестве аргумента хранимой процедуре, временная метка преобразуется в JavaScript дата объект. В других ситуациях (например, при извлечении из ResultSet ) метка времени преобразуется в объект SfDate . Дополнительные сведения о типе данных SfDate , который не является стандартным типом данных JavaScript, см. в API хранимых процедур JavaScript.

VARCHAR, СИМВОЛ, СИМВОЛ, СТРОКА, ТЕКСТ

струна

ВАРИАНТ

JSON

Примечания

Не все типы данных Snowflake SQL имеют соответствующий тип данных JavaScript. Например, JavaScript не
напрямую поддерживают типы данных INTEGER или NUMBER. В этих случаях следует преобразовать тип данных SQL в
соответствующий альтернативный тип данных. Например, вы можете преобразовать SQL INTEGER в SQL FLOAT, который затем может быть
преобразовано в значение JavaScript типа данных число .

В таблице ниже показаны соответствующие преобразования для несовместимых типов данных SQL:

Несовместимый тип данных SQL

Совместимый тип данных SQL

ДВОИЧНЫЙ

Uint8Array

ЦЕЛОЕ ЧИСЛО

ПОПЛАВОК

ЦИФРА, ЦИФРА, ДЕСЯТИЧНАЯ

ПОПЛАВОК

ОБЪЕКТ

Uint8Array

При возврате значений

Если возвращает
оператор в JavaScript возвращает тип данных, отличный от объявленного типа возвращаемого значения хранимой процедуры,
значение JavaScript приводится к типу данных SQL, если это возможно. Например, если возвращается число, но
хранимая процедура объявлена ​​как возвращающая строку, число преобразуется в строку в JavaScript, и
затем копируется в строку, возвращенную в операторе SQL. (Имейте в виду, что некоторые ошибки программирования JavaScript, такие как
возвращающий неправильный тип данных, может быть скрыт этим поведением.)

Если не существует действительного приведения для преобразования, возникает ошибка.

При связывании значений

Когда вы связываете переменные JavaScript с инструкциями SQL, Snowflake преобразует типы данных JavaScript в
типы данных SQL. Вы можете привязывать переменные следующих типов данных JavaScript:

  • число

  • строка

  • SfDate

    Дополнительные сведения о типе данных SfDate , который не является стандартным типом данных JavaScript, см.
    API хранимых процедур JavaScript.

Дополнительные сведения о привязке, включая некоторые примеры, см. в разделе Переменные привязки.

Вам также могут быть полезны следующие темы:

  • Типы данных JavaScript

  • Аргументы JavaScript и возвращаемые значения

Сопоставления типов данных SQL-Python

В таблице ниже показаны сопоставления типов между SQL и Python. Эти отображения обычно применяются к обоим аргументам
передается обработчику Python, а значения возвращаются из него.

Тип SQL

Тип Python

Примечания

МАССИВ

список

Когда тип данных Python преобразуется в МАССИВ, если есть встроенные десятичные данные Python, внедренные десятичные числа Python будут преобразованы в строку в МАССИВЕ.

ДВОИЧНЫЙ

байт

Логический

логический

ДАТА

дата/время. дата

ПОПЛАВОК

поплавок

Операции с плавающей запятой могут иметь небольшие ошибки округления, которые могут накапливаться, особенно когда агрегатные функции обрабатывают большое количество строк. Ошибки округления могут меняться каждый раз при выполнении запроса, если строки обрабатываются в другом порядке. Дополнительные сведения см. в разделе Типы числовых данных: с плавающей запятой.

ГЕОГРАФИЯ

дикт

Форматирует географию как GeoJSON, а затем преобразует ее в словарь Python.

НОМЕР

целое или десятичное. Десятичное

Если масштаб типа NUMBER равен 0, то используется тип Python int. В противном случае используется тип decimal.Decimal.

ОБЪЕКТ

дикт

Когда тип данных Python преобразуется в OBJECT, если есть встроенные десятичные данные Python, внедренные десятичные числа Python будут преобразованы в String в OBJECT.

ВРЕМЯ

дата-время.время

Хотя Snowflake может хранить значения времени с точностью до наносекунд, тип Python datetime.time поддерживает точность только до миллисекунд. Преобразование между типами данных Snowflake и Python может снизить эффективную точность до миллисекунд.

TIMESTAMP_LTZ

дата-время.дата-время

Используйте локальный часовой пояс для преобразования внутреннего времени UTC в локальное «наивное» время и дату. Требует «наивного» datetime в качестве возвращаемого типа.

TIMESTAMP_NTZ

дата-время.дата-время

Прямое преобразование в «наивное» значение даты и времени. Требует «наивного» datetime в качестве возвращаемого типа.

TIMESTAMP_TZ

дата-время.дата-время

Преобразование в «осведомленное» значение даты и времени с информацией о часовом поясе. Требует «осведомленного» datetime в качестве возвращаемого типа.

ВАРЧАР

улица

ВАРИАНТ

dict , list , int , float , str или логический

Каждая вариантная строка динамически преобразуется в тип Python для аргументов и наоборот для возвращаемых значений. Следующие типы преобразуются в строки, а не в собственные типы Python: decimal, binary, date, time, timestamp_ltz, timestamp_ntz, timestamp_tz. Когда тип данных Python преобразуется в VARIANT, если есть встроенные десятичные данные Python, внедренные десятичные числа Python будут преобразованы в String в VARIANT.

Сопоставления типов данных SQL-Scala

Snowflake поддерживает следующие типы данных Scala в дополнение к типам Java, перечисленным в сопоставлениях типов данных SQL-Java:

Тип данных SQL

Тип Scala

Примечания

МАССИВ

Массив[Строка]

ДВОИЧНЫЙ

Массив [байт]

Логический

Логический или Опция [логический]

ДВОЙНОЙ

Двойной или Опция[Двойной]

ПОПЛАВОК

Плавающий или Опция [плавающий]

НОМЕР

Поддерживаются следующие типы:

ОБЪЕКТ

Карта[строка, строка]

ВАРЧАР

Строка

ВАРИАНТ

Строка

Форматирует значение в зависимости от представляемого типа.

Imacros | Все права защищены © 2021