Ce contenu n'est pas disponible dans la langue sélectionnée.
3.2. Type Conversions
Data types may be converted from one form to another either explicitly or implicitly. Implicit conversions automatically occur in criteria and expressions to ease development. Explicit data type conversions require the use of the
CONVERT
function or CAST
keyword.
Note
Array conversions are only valid if you use them to convert or cast to and from compatible object arrays. You cannot, for example, cast from
integer[]
to long[]
.
Type Conversion Considerations
- Any type may be implicitly converted to the OBJECT type.
- The OBJECT type may be explicitly converted to any other type.
- The
NULL
value may be converted to any type. - Any valid implicit conversion is also a valid explicit conversion.
- Situations involving literal values that would normally require explicit conversions may have the explicit conversion applied implicitly if no loss of information occurs.
- If
widenComparisonToString
is false (the default), when Red Hat JBoss Data Virtualization detects that an explicit conversion that can not be applied implicitly in criteria, it will throw an exception.If widenComparisonToString
is true, then depending upon the comparison, a widening conversion is applied or the criteria are treated as false.SELECT * FROM my.table WHERE created_by = 'not a date'
WithwidenComparisonToString
is false andcreated_by
is a date, rather than convertingnot a date
to a date value, Red Hat JBoss Data Virtualization throws an exception. - When Red Hat JBoss Data Virtualization detects that an explicit conversion can not be applied implicitly in criteria, the criteria will be treated as false. For example:
SELECT * FROM my.table WHERE created_by = 'not a date'
Given that created_by is typed as date, rather than converting'not a date'
to a date value, the criteria will remain as a string comparison and therefore be false. - Explicit conversions that are not allowed between two types will result in an exception before execution. Allowed explicit conversions may still fail during processing if the runtime values are not actually convertible.
Warning
The JBoss Data Virtualization conversions of float/double/bigdecimal/timestamp to string rely on the JDBC/Java defined output formats. Pushdown behavior attempts to mimic these results, but may vary depending upon the actual source type and conversion logic. Care must be taken to not assume the string form in criteria or other places where a variation may cause different results.
Source Type | Valid Implicit Target Types | Valid Explicit Target Types |
---|---|---|
string | clob | char, boolean, byte, short, integer, long, biginteger, float, double, bigdecimal, xml [a] |
char | string | |
boolean | string, byte, short, integer, long, biginteger, float, double, bigdecimal | |
byte | string, short, integer, long, biginteger, float, double, bigdecimal | boolean |
short | string, integer, long, biginteger, float, double, bigdecimal | boolean, byte |
integer | string, long, biginteger, double, bigdecimal | boolean, byte, short, float |
long | string, biginteger, bigdecimal | boolean, byte, short, integer, float, double |
biginteger | string, bigdecimal | boolean, byte, short, integer, long, float, double |
bigdecimal | string | boolean, byte, short, integer, long, biginteger, float, double |
date | string, timestamp | |
time | string, timestamp | |
timestamp | string | date, time |
clob | string | |
xml | string [b] | |
[a]
string to xml is equivalent to XMLPARSE(DOCUMENT exp).
[b]
xml to string is equivalent to XMLSERIALIZE(exp AS STRING).
|