Преобразование числового выражения в символьный вид
Синтаксис
 
to_char(<значение>[,<формат>])

<значение> – значение типа SMALLINT, INTEGER, BIGINT, NUMERIC, REAL или DOUBLE;

<формат> – строковый литерал, задающий формат символьного представления в виде шаблона:

[FM][][<$>][{<символ>[.<символ>]} | {<цифра>[.<цифра>]EEEE}]
<символ>::= <цифра> | , | X
<цифра>::= '0'|'9'

'0' – принудительный вывод незначащих нулей

'9' – принудительный вывод ведущих пробелов вместо незначащих нулей и незначащих нулей после запятой

FM – вывод без ведущих пробелов

S – принудительный вывод знака '+'/'-'

$ – принудительный вывод '$'

. – децимальная точка

, – разделитель групп цифр в целой части выводимого значения

X – вывод в шестнадцатеричной форме

EEEE – вывод в экспоненциальной форме

Ограничения:

  • до запятой – не более 32 позиций;

  • после запятой – не более 15 позиций;

  • групп цифр – не более 32.

Примеры
  c:=to_char(123I, "XX");
  execute "insert into test_to_char_res values(?, ?);" using 7B, c;
  c:=to_char(2063597568I, "XXXXXXXXX");
  execute "insert into test_to_char_res values(?, ?);" using 7B000000, c;
  c:=to_char(123B, "XX");
  execute "insert into test_to_char_res values(?, ?);" using 7B, c;
  c:=to_char(2063597568B, "XXXXXXXXX");
  execute "insert into test_to_char_res values(?, ?);" using 7B000000, c;
  c:=to_char(34621422143503227, "XXXXXXXXXXXXXXX");
  execute "insert into test_to_char_res values(?, ?);" using 7B0000007B7B7B, c;
  c:=to_char(+123.45N, "XX");
  execute "insert into test_to_char_res values(?, ?);" using 7B, c;
  c:=to_char(+2063597568.45N, "XXXXXXXXX");
  execute "insert into test_to_char_res values(?, ?);" using 7B000000, c;
  c:=to_char(-123.45N, "XXX");
  execute "insert into test_to_char_res values(?, ?);" using ####, c;

//  /* EEEE */
  c:=to_char(+123.456N, "9.9EEEE");
  execute "insert into test_to_char_res values(?, ?);" using 1.2E+02, c;
  c:=to_char(+123.456N, "FM9.9EEEE");
  execute "insert into test_to_char_res values(?, ?);" using 1.2E+02, c;
  c:=to_char(1000.0D, "FM9.9EEEE"); //+1E+03D
  execute "insert into test_to_char_res values(?, ?);" using 1.E+03, c;
  c:=to_char(-0.001D, "FM9.9EEEE"); //-1E-03D
  execute "insert into test_to_char_res values(?, ?);" using -1.E-03, c;
  c:=to_char(1.1111D, "S$9EEEE");
  execute "insert into test_to_char_res values(?, ?);" using +$1E+00, c;
  c:=to_char(-1.1111D, "S$9EEEE");
  execute "insert into test_to_char_res values(?, ?);" using -$1E+00, c;
  c:=to_char(-1.1111D, "FMS$9EEEE");
  execute "insert into test_to_char_res values(?, ?);" using -$1E+00, c;
  c:=to_char(-1.1121D, "FMS$9.999EEEE");
  execute "insert into test_to_char_res values(?, ?);" using -$1.112E+00, c;