UltraLite allows you to request data type conversions explicitly, by using either the CAST or CONVERT function.
NOTEIn most cases, self-casting has no effect on operations. However, self-casts to CHAR/VARCHAR, BINARY/VARBINARY and NUMERIC are not no-op procedures. |
You can CAST or CONVERT most combinations of data types, as illustrated by the table that follows.
In some cases, however, the ability to convert or not is contingent upon the value used in the conversion. As the Value-dependent column shows the value must be compatible with the new data type to avoid generating a specific type of conversion error. For example:
If you cast varchar "1234" to long, this conversion is supported. However, if you cast varchar "hello" to long, then this generates a SQLE_CONVERSION_ERROR error because hello is not a number.
If you cast long 1234 to short, this conversion is supported. However, if you cast long 1000000 to short, then this generates a SQLE_OVERFLOW_ERROR error, because 1000000 is beyond the range of numbers a short can hold.
From | Always | Never | Value-dependent |
---|---|---|---|
BINARY or VARBINARY |
CHAR or VARCHAR BINARY LONG BINARY BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG |
LONG VARCHAR REAL TIME TIMESTAMP DOUBLE DATE |
NUMERIC UID1 |
LONG BINARY |
BINARY LONG BINARY |
BIT CHAR or VARCHAR LONG VARCHAR TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG REAL DOUBLE NUMERIC DATE TIME TIMESTAMP UID | N/A |
BIT |
CHAR or VARCHAR BINARY BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT REAL SIGNED BIG DOUBLE NUMERIC |
LONG VARCHAR LONG BINARY DATE TIME TIMESTAMP UID | N/A |
CHAR or VARCHAR |
BINARY or VARBINARY CHAR or VARCHAR LONG VARCHAR |
LONG BINARY |
BIT TINY INT SIGNED SHORT SHORT INT LONG INT SIGNED LONG BIG INT SIGNED BIG DOUBLE NUMERIC REAL DATE TIME TIMESTAMP UID |
LONG VARCHAR |
CHAR or VARCHAR LONG VARCHAR |
BINARY or VARBINARY LONG BINARY BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG REAL NUMERIC DATE TIME TIMESTAMP DOUBLE UID | |
TINY INT |
BINARY or VARBINARY CHAR or VARCHAR TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG REAL DOUBLE NUMERIC |
LONG VARCHAR LONG BINARY DATE TIME TIMESTAMP UID | |
SHORT INT |
BINARY or VARBINARY CHAR or VARCHAR SHORT INT LONG INT SIGNED LONG BIG INT SIGNED BIG REAL DOUBLE NUMERIC |
LONG VARCHAR LONG BINARY DATE TIME TIMESTAMP UID |
BIT TINY INT SIGNED SHORT |
SIGNED SHORT |
BINARY or VARBINARY CHAR or VARCHAR SIGNED SHORT SIGNED LONG SIGNED BIG REAL DOUBLE NUMERIC |
LONG VARCHAR LONG BINARY DATE TIME TIMESTAMP UID |
SHORT INT LONG INT BIG INT BIT TINY INT |
LONG INT |
BINARY or VARBINARY CHAR or VARCHAR LONG INT BIG INT SIGNED BIG REAL DOUBLE NUMERIC |
LONG VARCHAR LONG BINARY DATE TIME TIMESTAMP UID |
BIT TINY INT SHORT INT SIGNED SHORT SIGNED LONG |
SIGNED LONG |
BINARY or VARBINARY CHAR or VARCHAR SIGNED LONG SIGNED BIG REAL DOUBLE NUMERIC DATE TIMESTAMP |
LONG VARCHAR LONG BINARY TIME UID |
BIT TINY INT SHORT INT SIGNED SHORT LONG INT BIG INT |
BIG INT |
BINARY or VARBINARY CHAR or VARCHAR BIG INT REAL DOUBLE NUMERIC |
LONG VARCHAR LONG BINARY DATE TIME TIMESTAMP UID |
BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG SIGNED BIG |
SIGNED BIG |
BINARY or VARBINARY CHAR or VARCHAR SIGNED BIG REAL DOUBLE NUMERIC DATE TIMESTAMP |
LONG VARCHAR LONG BINARY TIME UID |
BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT |
REAL |
CHAR or VARCHAR REAL DOUBLE NUMERIC |
LONG VARCHAR BINARY or VARBINARY LONG BINARY DATE TIME TIMESTAMP UID |
BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG |
DOUBLE |
CHAR or VARCHAR DOUBLE NUMERIC |
LONG VARCHAR BINARY or VARBINARY LONG BINARY DATE TIME TIMESTAMP UID |
BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG REAL |
NUMERIC |
CHAR or VARCHAR REAL NUMERIC DOUBLE |
LONG VARCHAR LONG BINARY DATE TIME TIMESTAMP UID |
BINARY or VARBINARY2 BIT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG TINY INT |
DATE |
CHAR or VARCHAR SIGNED LONG SIGNED BIG DATE TIMESTAMP |
LONG VARCHAR LONG BINARY BIT TINY INT SHORT INT SIGNED SHORT LONG INT BIG INT REAL DOUBLE NUMERIC TIME BINARY or VARBINARY UID | |
TIME |
CHAR or VARCHAR TIME TIMESTAMP |
LONG VARCHAR LONG BINARY BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG REAL DOUBLE NUMERIC DATE BINARY or VARBINARY UID | |
TIMESTAMP |
CHAR or VARCHAR SIGNED LONG SIGNED BIG DATE TIME TIMESTAMP |
LONG VARCHAR LONG BINARY BIT TINY INT SHORT INT SIGNED SHORT LONG INT BIG INT REAL DOUBLE NUMERIC BINARY or VARBINARY UID | |
UID |
CHAR or VARCHAR UID |
LONG VARCHAR LONG BINARY BIT TINY INT SHORT INT SIGNED SHORT LONG INT SIGNED LONG BIG INT SIGNED BIG REAL DOUBLE NUMERIC DATE TIME TIMESTAMP |
BINARY or VARBINARY1 |
1The BINARY value must be a 16 byte length to be compatible with a UUID.
2Only works if the source NUMERIC value is able to cast as a BIG INT.