Поделиться через


Функция to_varchar

Область применения:флажок Databricks SQL флажок Databricks Runtime 11.3 LTS и выше

Возвращает expr, приведённый к STRING, с использованием форматирования fmt.

В Databricks Runtime 14.0 и более ранних to_varchar версиях поддерживает expr числовые типы.

В Databricks SQL и Databricks Runtime, начиная с версии 14.1, to_varchar также поддерживает expr типы DATE, TIMESTAMP, и BINARY.

to_varcharявляется синонимом to_char.

Синтаксис

to_varchar(expr, { numericFormat | datetimeFormat | stringFormat } )

numericFormat
  { ' [ S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

Аргументы

  • expr: выражение типа числовой, даты и времени, STRING или BINARY.
  • numericFormat STRING: литерал, указывающий форматированные выходные данные для expr числовых типов.
  • datetimeFormat STRING: литерал, указывающий форматированные выходные данные для объекта expr типа дата и время.
  • stringFormat STRING: литерал, указывающий форматированные выходные данные для expr типа BINARY.

Возвраты

Символ STRING, представляющий результат операции форматирования.

datetmeFormat может содержать шаблоны, указанные в Datetime patterns.

stringFormat может быть одним из следующих вариантов (без учета регистра):

  • "base64"

    Базовая строка 64.

  • "шестнадцатеричный"

    Строка в шестнадцатеричном формате.

  • 'utf-8'

    Входной двоичный файл декодируется в строку UTF-8.

numericFormat может включать следующие элементы (регистр не имеет значения):

  • 0 или 9

    Указывает ожидаемую цифру между 0 и 9. Последовательность цифр со значениями от 0 до 9 в строке формата соответствует последовательности цифр в входном значении. Это приводит к созданию результирующей строки с той же длиной, что и у соответствующей последовательности, в виде строки форматирования. Результирующая строка слева заполняется нулями, если последовательность 0/9 содержит больше цифр, чем соответствующая часть десятичного значения, начинается с 0 и расположена до десятичной точки. В противном случае, оно заполняется пробелами.

  • . или D

    Указывает позицию десятичной точки (необязательно, разрешено только один раз).

  • , или G

    Указывает позицию разделителя группирований (тысяч) (,). Справа и слева от каждого разделителя группирований должна находиться цифра 0 или 9.

  • $

    Указывает расположение знака валюты $. Этот символ может быть указан только один раз.

  • S или MI

    Указывает позицию знака "-" или "+" (необязательно, разрешено только один раз в начале или конце строки формата). Обратите внимание, что S печатает + для положительных значений, но MI печатает пробел.

  • PR

    Разрешено только в конце строки форматирования. Указывает, что результирующая строка будет заключена в угловые скобки, если входное значение отрицательное. ('<1>').

Если numExpr требует больше цифр, чем разрешает fmt, функция возвращает fmt с 0 и 9, заменёнными на # (например, '$###.##').

Если fmt имеет неправильный формат, Databricks SQL возвращает ошибку.

Эта функция является псевдонимом для to_varchar.

Примеры

> SELECT to_varchar(454, '999');
 454

> SELECT to_varchar(454, '000.00');
 1.00

> SELECT to_varchar(12454, '99,999');
 12,454

> SELECT to_varchar(78.12, '$99.99');
 $78.12

> SELECT to_varchar(-12454.8, '99,999.9S');
 12,454.8-

> SELECT to_varchar(12454.8, '99,999.9S');
 12,454.8+

> SELECT '>' || to_varchar(123, '00000.00') || '<';
 >00123.00<

> SELECT '>' || to_varchar(123, '99999.99') || '<';
 >  123.00<

> SELECT to_varchar(1.1, '99');
 ##

> SELECT to_varchar(111.11, '99.9');
 ##.#

> SELECT to_varchar(111.11, '$99.9');
 $##.#

> SELECT to_varchar(date'2016-04-08', 'y');
 2016

> SELECT to_varchar(x'537061726b2053514c', 'base64');
 U3BhcmsgU1FM

> SELECT to_varchar(x'537061726b2053514c', 'hex');
 537061726B2053514C

> SELECT to_varchar(encode('abc', 'utf-8'), 'utf-8');
 abc

> SELECT to_varchar(111, 'wrong');
 Error: 'wrong' is a malformed format.