org.h2.expression.function

## Class ToCharFunction

- java.lang.Object
- - org.h2.expression.Expression
  - - org.h2.expression.OperationN
    - - org.h2.expression.function.FunctionN
      - - org.h2.expression.function.ToCharFunction

All Implemented Interfaces:
  ExpressionWithVariableParameters, NamedExpression, HasSQL, Typed

    public final class ToCharFunction
    extends FunctionN

Emulates Oracle's TO_CHAR function.

### Nested Class Summary

Nested Classes
`static class` `ToCharFunction.Capitalization` Represents a capitalization / casing strategy.

### Field Summary

Fields
`static int` `JULIAN_EPOCH` The beginning of the Julian calendar.
`static int` `MONTHS` The month field.
`static int` `SHORT_MONTHS` The month field (short form).
`static int` `SHORT_WEEKDAYS` The weekday field (short form).
`static int` `WEEKDAYS` The weekday field.

### Fields inherited from class org.h2.expression.OperationN

`args, argsCount, type`

### Fields inherited from class org.h2.expression.Expression

`AUTO_PARENTHESES, MAP_IN_AGGREGATE, MAP_IN_WINDOW, MAP_INITIAL, WITH_PARENTHESES, WITHOUT_PARENTHESES`

### Fields inherited from interface org.h2.util.HasSQL

`ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS`

### Constructor Summary

Constructors
Constructor and Description
`ToCharFunction(Expression arg1, Expression arg2, Expression arg3)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`static void` `clearNames()` Used for testing.
`static java.lang.String[]` `getDateNames(int names)` Get the date (month / weekday / ...) names.
`java.lang.String` `getName()` Get the name.
`Value` `getValue(SessionLocal session, Value v1, Value v2, Value v3)` Returns the value of this function.
`Expression` `optimize(SessionLocal session)` Try to optimize the expression.
`static java.lang.String` `toChar(java.math.BigDecimal number, java.lang.String format, java.lang.String nlsParam)` Emulates Oracle's TO_CHAR(number) function.
`static java.lang.String` `toCharDateTime(SessionLocal session, Value value, java.lang.String format, java.lang.String nlsParam)` Emulates Oracle's TO_CHAR(datetime) function.

### Methods inherited from class org.h2.expression.function.FunctionN

`getUnenclosedSQL, getValue`

### Methods inherited from class org.h2.expression.OperationN

`addParameter, doneWithParameters, getCost, getSubexpression, getSubexpressionCount, getType, isEverything, mapColumns, optimizeArguments, setEvaluatable, updateAggregate`

### Methods inherited from class org.h2.expression.Expression

`addFilterConditions, createIndexConditions, getAlias, getBooleanValue, getColumnName, getColumnNameForView, getEnclosedSQL, getNonAliasExpression, getNotIfPossible, getNullable, getSchemaName, getSQL, getSQL, getSQL, getSQL, getTableAlias, getTableName, getWhenSQL, getWhenValue, isConstant, isIdentity, isNullConstant, isValueSet, isWhenConditionOperand, needParentheses, optimizeCondition, toString, writeExpressions, writeExpressions`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.h2.util.HasSQL

`getTraceSQL`

### Field Detail

#### JULIAN_EPOCH

    public static final int JULIAN_EPOCH

The beginning of the Julian calendar.

See Also:
  Constant Field Values

#### MONTHS

    public static final int MONTHS

The month field.

See Also:
  Constant Field Values

#### SHORT_MONTHS

    public static final int SHORT_MONTHS

The month field (short form).

See Also:
  Constant Field Values

#### WEEKDAYS

    public static final int WEEKDAYS

The weekday field.

See Also:
  Constant Field Values

#### SHORT_WEEKDAYS

    public static final int SHORT_WEEKDAYS

The weekday field (short form).

See Also:
  Constant Field Values

### Constructor Detail

#### ToCharFunction

    public ToCharFunction(Expression arg1,
                          Expression arg2,
                          Expression arg3)

### Method Detail

#### toChar

    public static java.lang.String toChar(java.math.BigDecimal number,
                                          java.lang.String format,
                                          java.lang.String nlsParam)

Emulates Oracle's TO_CHAR(number) function.

TO_CHAR(number) function
Input | Output | Closest `DecimalFormat` Equivalent
--- | --- | ---
, | Grouping separator. | ,
. | Decimal separator. | .
$ | Leading dollar sign. | $
0 | Leading or trailing zeroes. | 0
9 | Digit. | #
B | Blanks integer part of a fixed point number less than 1. | #
C | ISO currency symbol. | ¤
D | Local decimal separator. | .
EEEE | Returns a value in scientific notation. | E
FM | Returns values with no leading or trailing spaces. | None.
G | Local grouping separator. | ,
L | Local currency symbol. | ¤
MI | Negative values get trailing minus sign, positive get trailing space. | -
PR | Negative values get enclosing angle brackets, positive get spaces. | None.
RN | Returns values in Roman numerals. | None.
S | Returns values with leading/trailing +/- signs. | None.
TM | Returns smallest number of characters possible. | None.
U | Returns the dual currency symbol. | None.
V | Returns a value multiplied by 10^n. | None.
X | Hex value. | None.

See also TO_CHAR(number) and number format models in the Oracle documentation.

Parameters:
  `number` - the number to format
  `format` - the format pattern to use (if any)
  `nlsParam` - the NLS parameter (if any)
Returns:
  the formatted number

#### getDateNames

    public static java.lang.String[] getDateNames(int names)

Get the date (month / weekday / ...) names.

Parameters:
  `names` - the field
Returns:
  the names

#### clearNames

    public static void clearNames()

Used for testing.

#### toCharDateTime

    public static java.lang.String toCharDateTime(SessionLocal session,
                                                  Value value,
                                                  java.lang.String format,
                                                  java.lang.String nlsParam)

Emulates Oracle's TO_CHAR(datetime) function.

TO_CHAR(datetime) function
Input | Output | Closest `SimpleDateFormat` Equivalent
--- | --- | ---
- / , . ; : "text" | Reproduced verbatim. | 'text'
A.D. AD B.C. BC | Era designator, with or without periods. | G
A.M. AM P.M. PM | AM/PM marker. | a
CC SCC | Century. | None.
D | Day of week. | u
DAY | Name of day. | EEEE
DY | Abbreviated day name. | EEE
DD | Day of month. | d
DDD | Day of year. | D
DL | Long date format. | EEEE, MMMM d, yyyy
DS | Short date format. | MM/dd/yyyy
E | Abbreviated era name (Japanese, Chinese, Thai) | None.
EE | Full era name (Japanese, Chinese, Thai) | None.
FF[1-9] | Fractional seconds. | S
FM | Returns values with no leading or trailing spaces. | None.
FX | Requires exact matches between character data and format model. | None.
HH HH12 | Hour in AM/PM (1-12). | hh
HH24 | Hour in day (0-23). | HH
IW | Week in year. | w
WW | Week in year. | w
W | Week in month. | W
IYYY IYY IY I | Last 4/3/2/1 digit(s) of ISO year. | yyyy yyy yy y
RRRR RR | Last 4/2 digits of year. | yyyy yy
Y,YYY | Year with comma. | None.
YEAR SYEAR | Year spelled out (S prefixes BC years with minus sign). | None.
YYYY SYYYY | 4-digit year (S prefixes BC years with minus sign). | yyyy
YYY YY Y | Last 3/2/1 digit(s) of year. | yyy yy y
J | Julian day (number of days since January 1, 4712 BC). | None.
MI | Minute in hour. | mm
MM | Month in year. | MM
MON | Abbreviated name of month. | MMM
MONTH | Name of month, padded with spaces. | MMMM
RM | Roman numeral month. | None.
Q | Quarter of year. | None.
SS | Seconds in minute. | ss
SSSSS | Seconds in day. | None.
TS | Short time format. | h:mm:ss aa
TZD | Daylight savings time zone abbreviation. | z
TZR | Time zone region information. | zzzz
X | Local radix character. | None.

See also TO_CHAR(datetime) and datetime format models in the Oracle documentation.

Parameters:
  `session` - the session
  `value` - the date-time value to format
  `format` - the format pattern to use (if any)
  `nlsParam` - the NLS parameter (if any)
Returns:
  the formatted timestamp

#### getValue

    public Value getValue(SessionLocal session,
                          Value v1,
                          Value v2,
                          Value v3)

Description copied from class: `FunctionN`
Returns the value of this function.

Overrides:
  `getValue` in class `FunctionN`
Parameters:
  `session` - the session
  `v1` - the value of first argument, or `null`
  `v2` - the value of second argument, or `null`
  `v3` - the value of third argument, or `null`
Returns:
  the resulting value

#### optimize

    public Expression optimize(SessionLocal session)

Description copied from class: `Expression`
Try to optimize the expression.

Specified by:
  `optimize` in class `Expression`
Parameters:
  `session` - the session
Returns:
  the optimized expression

#### getName

    public java.lang.String getName()

Description copied from interface: `NamedExpression`
Get the name.

Returns:
  the name in uppercase