Package 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 Modifier and Type Class Description static class
ToCharFunction.Capitalization
Represents a capitalization / casing strategy.
-
Field Summary
Fields Modifier and Type Field Description (package private) static int
AM_PM
The AM / PM field.static int
JULIAN_EPOCH
The beginning of the Julian calendar.static int
MONTHS
The month field.private static java.lang.String[][]
NAMES
private static java.lang.String[]
ROMAN_NUMERALS
private static int[]
ROMAN_VALUES
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 Description ToCharFunction(Expression arg1, Expression arg2, Expression arg3)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
addSign(java.lang.StringBuilder output, int signum, boolean leadingSign, boolean trailingSign, boolean trailingMinus, boolean angleBrackets, boolean fillMode)
private static int
calculateScale(java.lang.String format, int separator)
static void
clearNames()
Used for testing.private static ToCharFunction.Capitalization
containsAt(java.lang.String s, int index, java.lang.String... substrings)
Returns a capitalization strategy if the specified string contains any of the specified substrings at the specified index.private static int
findDecimalSeparator(java.lang.String format)
private static java.util.Currency
getCurrency()
static java.lang.String[]
getDateNames(int names)
Get the date (month / weekday / ...) names.java.lang.String
getName()
Get the name.private static java.lang.String
getTimeZone(SessionLocal session, Value value, boolean tzd)
Returns time zone display name or ID for the specified date-time value.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.private static java.lang.String
toHex(java.math.BigDecimal number, java.lang.String format)
private static java.lang.String
toRomanNumeral(int number)
private static java.lang.String
zeroesAfterDecimalSeparator(java.math.BigDecimal number)
-
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
-
ROMAN_VALUES
private static final int[] ROMAN_VALUES
-
ROMAN_NUMERALS
private static final java.lang.String[] ROMAN_NUMERALS
-
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
-
AM_PM
static final int AM_PM
The AM / PM field.- See Also:
- Constant Field Values
-
NAMES
private static volatile java.lang.String[][] NAMES
-
-
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. - Parameters:
number
- the number to formatformat
- the format pattern to use (if any)nlsParam
- the NLS parameter (if any)- Returns:
- the formatted number
-
getCurrency
private static java.util.Currency getCurrency()
-
zeroesAfterDecimalSeparator
private static java.lang.String zeroesAfterDecimalSeparator(java.math.BigDecimal number)
-
addSign
private static void addSign(java.lang.StringBuilder output, int signum, boolean leadingSign, boolean trailingSign, boolean trailingMinus, boolean angleBrackets, boolean fillMode)
-
findDecimalSeparator
private static int findDecimalSeparator(java.lang.String format)
-
calculateScale
private static int calculateScale(java.lang.String format, int separator)
-
toRomanNumeral
private static java.lang.String toRomanNumeral(int number)
-
toHex
private static java.lang.String toHex(java.math.BigDecimal number, java.lang.String format)
-
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.
-
getTimeZone
private static java.lang.String getTimeZone(SessionLocal session, Value value, boolean tzd)
Returns time zone display name or ID for the specified date-time value.- Parameters:
session
- the sessionvalue
- valuetzd
- iftrue
return TZD (time zone region with Daylight Saving Time information included), iffalse
return TZR (time zone region)- Returns:
- time zone display name or ID
-
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 sessionvalue
- the date-time value to formatformat
- the format pattern to use (if any)nlsParam
- the NLS parameter (if any)- Returns:
- the formatted timestamp
-
containsAt
private static ToCharFunction.Capitalization containsAt(java.lang.String s, int index, java.lang.String... substrings)
Returns a capitalization strategy if the specified string contains any of the specified substrings at the specified index. The capitalization strategy indicates the casing of the substring that was found. If none of the specified substrings are found, this method returnsnull
.- Parameters:
s
- the string to checkindex
- the index to check atsubstrings
- the substrings to check for within the string- Returns:
- a capitalization strategy if the specified string contains any of
the specified substrings at the specified index,
null
otherwise
-
getValue
public Value getValue(SessionLocal session, Value v1, Value v2, Value v3)
Description copied from class:FunctionN
Returns the value of this function.
-
optimize
public Expression optimize(SessionLocal session)
Description copied from class:Expression
Try to optimize the expression.- Specified by:
optimize
in classExpression
- 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
-
-