Class ToCharFunction

All Implemented Interfaces:
ExpressionWithVariableParameters, NamedExpression, HasSQL, Typed

public final class ToCharFunction extends FunctionN
Emulates Oracle's TO_CHAR function.
  • Field Details

    • JULIAN_EPOCH

      public static final int JULIAN_EPOCH
      The beginning of the Julian calendar.
      See Also:
    • ROMAN_VALUES

      private static final int[] ROMAN_VALUES
    • ROMAN_NUMERALS

      private static final String[] ROMAN_NUMERALS
    • MONTHS

      public static final int MONTHS
      The month field.
      See Also:
    • SHORT_MONTHS

      public static final int SHORT_MONTHS
      The month field (short form).
      See Also:
    • WEEKDAYS

      public static final int WEEKDAYS
      The weekday field.
      See Also:
    • SHORT_WEEKDAYS

      public static final int SHORT_WEEKDAYS
      The weekday field (short form).
      See Also:
    • AM_PM

      static final int AM_PM
      The AM / PM field.
      See Also:
    • NAMES

      private static volatile String[][] NAMES
  • Constructor Details

  • Method Details

    • toChar

      public static String toChar(BigDecimal number, String format, 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
    • getCurrency

      private static Currency getCurrency()
    • zeroesAfterDecimalSeparator

      private static String zeroesAfterDecimalSeparator(BigDecimal number)
    • addSign

      private static void addSign(StringBuilder output, int signum, boolean leadingSign, boolean trailingSign, boolean trailingMinus, boolean angleBrackets, boolean fillMode)
    • findDecimalSeparator

      private static int findDecimalSeparator(String format)
    • calculateScale

      private static int calculateScale(String format, int separator)
    • toRomanNumeral

      private static String toRomanNumeral(int number)
    • toHex

      private static String toHex(BigDecimal number, String format)
    • getDateNames

      public static 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 String getTimeZone(SessionLocal session, Value value, boolean tzd)
      Returns time zone display name or ID for the specified date-time value.
      Parameters:
      session - the session
      value - value
      tzd - if true return TZD (time zone region with Daylight Saving Time information included), if false return TZR (time zone region)
      Returns:
      time zone display name or ID
    • toCharDateTime

      public static String toCharDateTime(SessionLocal session, Value value, String format, 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
    • containsAt

      private static ToCharFunction.Capitalization containsAt(String s, int index, 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 returns null .
      Parameters:
      s - the string to check
      index - the index to check at
      substrings - 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.
      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 String getName()
      Description copied from interface: NamedExpression
      Get the name.
      Returns:
      the name in uppercase