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

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

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

[FM][< S >][< $ >][{< символ >[.< символ >]} | {< цифра >[.< цифра >]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;