Package org.h2.value

# Class Value

java.lang.Object
org.h2.value.VersionedValue<Value>
org.h2.value.Value

All Implemented Interfaces:
  `HasSQL`, `Typed`

Direct Known Subclasses:
  `SearchRow`, `SpatialKey`, `ValueBigint`, `ValueBinary`, `ValueBoolean`, `ValueChar`, `ValueCollectionBase`, `ValueDate`, `ValueDecfloat`, `ValueDouble`, `ValueEnumBase`, `ValueGeometry`, `ValueInteger`, `ValueInterval`, `ValueJavaObject`, `ValueJson`, `ValueLob`, `ValueNull`, `ValueNumeric`, `ValueReal`, `ValueSmallint`, `ValueTime`, `ValueTimestamp`, `ValueTimestampTimeZone`, `ValueTimeTimeZone`, `ValueTinyint`, `ValueUuid`, `ValueVarbinary`, `ValueVarchar`, `ValueVarcharIgnoreCase`

public abstract class Value extends VersionedValue<Value> implements HasSQL, Typed
This is the base class for all value classes. It provides conversion and comparison methods.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`ARRAY`
The value type for ARRAY values.
`static final int`
`ASSIGN_TO`
Cast a value to the specified type for assignment.
`static final int`
`BIGINT`
The value type for BIGINT values.
`static final int`
`BINARY`
The value type for BINARY values.
`static final int`
`BLOB`
The value type for BINARY LARGE OBJECT values.
`static final int`
`BOOLEAN`
The value type for BOOLEAN values.
`static final int`
`CAST_TO`
Cast a value to the specified type.
`static final int`
`CHAR`
The value type for CHARACTER values.
`static final int`
`CLOB`
The value type for CHARACTER LARGE OBJECT values.
`static final int`
`CONVERT_TO`
Convert a value to the specified type without taking scale and precision into account.
`static final int`
`DATE`
The value type for DATE values.
`static final int`
`DECFLOAT`
The value type for DECFLOAT values.
`static final int`
`DOUBLE`
The value type for DOUBLE PRECISION values.
`static final Value[]`
`EMPTY_VALUES`
Empty array of values.
`static final int`
`ENUM`
The value type for ENUM values.
`static final int`
`GEOMETRY`
The value type for string values with a fixed size.
`static final int`
`INTEGER`
The value type for INTEGER values.
`static final int`
`INTERVAL_DAY`
The value type for `INTERVAL DAY` values.
`static final int`
`INTERVAL_DAY_TO_HOUR`
The value type for `INTERVAL DAY TO HOUR` values.
`static final int`
`INTERVAL_DAY_TO_MINUTE`
The value type for `INTERVAL DAY TO MINUTE` values.
`static final int`
`INTERVAL_DAY_TO_SECOND`
The value type for `INTERVAL DAY TO SECOND` values.
`static final int`
`INTERVAL_HOUR`
The value type for `INTERVAL HOUR` values.
`static final int`
`INTERVAL_HOUR_TO_MINUTE`
The value type for `INTERVAL HOUR TO MINUTE` values.
`static final int`
`INTERVAL_HOUR_TO_SECOND`
The value type for `INTERVAL HOUR TO SECOND` values.
`static final int`
`INTERVAL_MINUTE`
The value type for `INTERVAL MINUTE` values.
`static final int`
`INTERVAL_MINUTE_TO_SECOND`
The value type for `INTERVAL MINUTE TO SECOND` values.
`static final int`
`INTERVAL_MONTH`
The value type for `INTERVAL MONTH` values.
`static final int`
`INTERVAL_SECOND`
The value type for `INTERVAL SECOND` values.
`static final int`
`INTERVAL_YEAR`
The value type for `INTERVAL YEAR` values.
`static final int`
`INTERVAL_YEAR_TO_MONTH`
The value type for `INTERVAL YEAR TO MONTH` values.
`static final int`
`JAVA_OBJECT`
The value type for JAVA_OBJECT values.
`static final int`
`JSON`
The value type for JSON values.
`static final BigDecimal`
`MAX_LONG_DECIMAL`
The largest BIGINT value, as a BigDecimal.
`static final BigDecimal`
`MIN_LONG_DECIMAL`
The smallest BIGINT value, as a BigDecimal.
`static final int`
`NULL`
The value type for NULL.
`static final int`
`NUMERIC`
The value type for NUMERIC values.
`static final int`
`REAL`
The value type for REAL values.
`static final int`
`ROW`
The value type for ROW values.
`static final int`
`SMALLINT`
The value type for SMALLINT values.
`static final int`
`TIME`
The value type for TIME values.
`static final int`
`TIME_TZ`
The value type for TIME WITH TIME ZONE values.
`static final int`
`TIMESTAMP`
The value type for TIMESTAMP values.
`static final int`
`TIMESTAMP_TZ`
The value type for TIMESTAMP WITH TIME ZONE values.
`static final int`
`TINYINT`
The value type for TINYINT values.
`static final int`
`TYPE_COUNT`
The number of value types.
`static final int`
`UNKNOWN`
The data type is unknown at this time.
`static final int`
`UUID`
The value type for UUID values.
`static final int`
`VARBINARY`
The value type for BINARY VARYING values.
`static final int`
`VARCHAR`
The value type for CHARACTER VARYING values.
`static final int`
`VARCHAR_IGNORECASE`
The value type for VARCHAR_IGNORECASE values.

### 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
`Value()`

## Method Summary

Modifier and Type
Method
Description
`Value`
`add(Value v)`
Add a value and return the result.
`final Value`
`castTo(TypeInfo targetType, CastDataProvider provider)`
Cast a value to the specified type.
`long`
`charLength()`
Returns length of this value in characters.
`static void`
`clearCache()`
Clear the value cache.
`final int`
`compareTo(Value v, CastDataProvider provider, CompareMode compareMode)`
Compare this value against another value using the specified compare mode.
`abstract int`
`compareTypeSafe(Value v, CompareMode mode, CastDataProvider provider)`
Compare this value against another value given that the values are of the same data type.
`int`
`compareWithNull(Value v, boolean forEquality, CastDataProvider provider, CompareMode compareMode)`
Compare this value against another value using the specified compare mode.
`boolean`
`containsNull()`
Returns true if this value is NULL or contains NULL value.
`final Value`
`convertForAssignTo(TypeInfo targetType, CastDataProvider provider, Object column)`
Cast a value to the specified type for assignment.
`final Value`
`convertTo(int targetType)`
Convert a value to the specified type without taking scale and precision into account.
`final Value`
`convertTo(int targetType, CastDataProvider provider)`
Convert a value to the specified type without taking scale and precision into account.
`final Value`
`convertTo(TypeInfo targetType)`
Convert a value to the specified type without taking scale and precision into account.
`final Value`
`convertTo(TypeInfo targetType, CastDataProvider provider)`
Convert a value to the specified type without taking scale and precision into account.
`final Value`
`convertTo(TypeInfo targetType, CastDataProvider provider, Object column)`
Convert a value to the specified type without taking scale and precision into account.
`final ValueArray`
`convertToAnyArray(CastDataProvider provider)`
Convert this value to any ARRAY data type.
`final ValueJson`
`convertToAnyJson()`
Convert this value to JSON data type.
`final ValueRow`
`convertToAnyRow()`
Convert this value to any ROW data type.
`final ValueBigint`
`convertToBigint(Object column)`
Converts this value to a BIGINT value.
`final ValueBoolean`
`convertToBoolean()`
Converts this value to a BOOLEAN value.
`ValueChar`
`convertToChar()`
Converts this value to a CHAR value.
`final ValueDate`
`convertToDate(CastDataProvider provider)`
Converts this value to a DATE value.
`final ValueDouble`
`convertToDouble()`
Converts this value to a DOUBLE value.
`final ValueEnum`
`convertToEnum(ExtTypeInfoEnum extTypeInfo, CastDataProvider provider)`
Converts this value to an ENUM value.
`final ValueGeometry`
`convertToGeometry(ExtTypeInfoGeometry extTypeInfo)`
Converts this value to a GEOMETRY value.
`static int`
`convertToInt(long x, Object column)`
Convert to integer, throwing exception if out of range.
`final ValueInteger`
`convertToInt(Object column)`
Converts this value to a INT value.
`final ValueJavaObject`
`convertToJavaObject(TypeInfo targetType, int conversionMode, Object column)`
Converts this value to a JAVA_OBJECT value.
`ValueJson`
`convertToJson(TypeInfo targetType, int conversionMode, Object column)`
Converts this value to a JSON value.
`static long`
`convertToLong(BigDecimal x, Object column)`
Convert to long, throwing exception if out of range.
`final ValueReal`
`convertToReal()`
Converts this value to a REAL value.
`final ValueSmallint`
`convertToSmallint(Object column)`
Converts this value to a SMALLINT value.
`final ValueTinyint`
`convertToTinyint(Object column)`
Converts this value to a TINYINT value.
`final ValueUuid`
`convertToUuid()`
Converts this value to a UUID value.
`Value`
`divide(Value v, TypeInfo quotientType)`
Divide by a value and return the result.
`abstract boolean`
`equals(Object other)`
Check if the two values have the same hash code.
`BigDecimal`
`getBigDecimal()`
`boolean`
`getBoolean()`
Returns this value as a Java `boolean` value.
`byte`
`getByte()`
Returns this value as a Java `byte` value.
`byte[]`
`getBytes()`
`byte[]`
`getBytesNoCopy()`
`double`
`getDouble()`
Returns this value as a Java `double` value.
`float`
`getFloat()`
Returns this value as a Java `float` value.
`static int`
`getHigherOrder(int t1, int t2)`
Get the higher value order type of two value types.
`InputStream`
`getInputStream()`
`InputStream`
`getInputStream(long oneBasedOffset, long length)`
Get the input stream
`int`
`getInt()`
Returns this value as a Java `int` value.
`long`
`getLong()`
Returns this value as a Java `long` value.
`int`
`getMemory()`
Get the memory used by this object.
`Reader`
`getReader()`
`Reader`
`getReader(long oneBasedOffset, long length)`
Get the reader
`short`
`getShort()`
Returns this value as a Java `short` value.
`int`
`getSignum()`
`abstract String`
`getString()`
Get the value as a string.
`abstract TypeInfo`
`getType()`
Returns the data type.
`static String`
`getTypeName(int valueType)`
Returns name of the specified data type.
`protected final DbException`
`getUnsupportedExceptionForOperation(String op)`
Create an exception meaning the specified operation is not supported for this data type.
`abstract int`
`getValueType()`
Get the value type.
`Value`
`getValueWithFirstNull(Value v)`
Scans this and specified values until a first NULL occurrence and returns a value where NULL appears earlier, or `null` if these two values have first NULL on the same position.
`abstract int`
`hashCode()`
`final boolean`
`isFalse()`
Returns whether this value `IS FALSE`.
`final boolean`
`isTrue()`
Returns whether this value `IS TRUE`.
`Value`
`modulus(Value v)`
Take the modulus with a value and return the result.
`Value`
`multiply(Value v)`
Multiply with a value and return the result.
`Value`
`negate()`
Return -value if this value support arithmetic operations.
`long`
`octetLength()`
Returns length of this value in bytes.
`Value`
`subtract(Value v)`
Subtract a value and return the result.
`String`
`toString()`

### Methods inherited from class org.h2.value.VersionedValue

`getCommittedValue, getCurrentValue, getOperationId, isCommitted`

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

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

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

`getSQL, getSQL, getTraceSQL`

## Field Details

### UNKNOWN

public static final int UNKNOWN
The data type is unknown at this time.

See Also:
  - Constant Field Values

### NULL

public static final int NULL
The value type for NULL.

See Also:
  - Constant Field Values

### CHAR

public static final int CHAR
The value type for CHARACTER values.

See Also:
  - Constant Field Values

### VARCHAR

public static final int VARCHAR
The value type for CHARACTER VARYING values.

See Also:
  - Constant Field Values

### CLOB

public static final int CLOB
The value type for CHARACTER LARGE OBJECT values.

See Also:
  - Constant Field Values

### VARCHAR_IGNORECASE

public static final int VARCHAR_IGNORECASE
The value type for VARCHAR_IGNORECASE values.

See Also:
  - Constant Field Values

### BINARY

public static final int BINARY
The value type for BINARY values.

See Also:
  - Constant Field Values

### VARBINARY

public static final int VARBINARY
The value type for BINARY VARYING values.

See Also:
  - Constant Field Values

### BLOB

public static final int BLOB
The value type for BINARY LARGE OBJECT values.

See Also:
  - Constant Field Values

### BOOLEAN

public static final int BOOLEAN
The value type for BOOLEAN values.

See Also:
  - Constant Field Values

### TINYINT

public static final int TINYINT
The value type for TINYINT values.

See Also:
  - Constant Field Values

### SMALLINT

public static final int SMALLINT
The value type for SMALLINT values.

See Also:
  - Constant Field Values

### INTEGER

public static final int INTEGER
The value type for INTEGER values.

See Also:
  - Constant Field Values

### BIGINT

public static final int BIGINT
The value type for BIGINT values.

See Also:
  - Constant Field Values

### NUMERIC

public static final int NUMERIC
The value type for NUMERIC values.

See Also:
  - Constant Field Values

### REAL

public static final int REAL
The value type for REAL values.

See Also:
  - Constant Field Values

### DOUBLE

public static final int DOUBLE
The value type for DOUBLE PRECISION values.

See Also:
  - Constant Field Values

### DECFLOAT

public static final int DECFLOAT
The value type for DECFLOAT values.

See Also:
  - Constant Field Values

### DATE

public static final int DATE
The value type for DATE values.

See Also:
  - Constant Field Values

### TIME

public static final int TIME
The value type for TIME values.

See Also:
  - Constant Field Values

### TIME_TZ

public static final int TIME_TZ
The value type for TIME WITH TIME ZONE values.

See Also:
  - Constant Field Values

### TIMESTAMP

public static final int TIMESTAMP
The value type for TIMESTAMP values.

See Also:
  - Constant Field Values

### TIMESTAMP_TZ

public static final int TIMESTAMP_TZ
The value type for TIMESTAMP WITH TIME ZONE values.

See Also:
  - Constant Field Values

### INTERVAL_YEAR

public static final int INTERVAL_YEAR
The value type for `INTERVAL YEAR` values.

See Also:
  - Constant Field Values

### INTERVAL_MONTH

public static final int INTERVAL_MONTH
The value type for `INTERVAL MONTH` values.

See Also:
  - Constant Field Values

### INTERVAL_DAY

public static final int INTERVAL_DAY
The value type for `INTERVAL DAY` values.

See Also:
  - Constant Field Values

### INTERVAL_HOUR

public static final int INTERVAL_HOUR
The value type for `INTERVAL HOUR` values.

See Also:
  - Constant Field Values

### INTERVAL_MINUTE

public static final int INTERVAL_MINUTE
The value type for `INTERVAL MINUTE` values.

See Also:
  - Constant Field Values

### INTERVAL_SECOND

public static final int INTERVAL_SECOND
The value type for `INTERVAL SECOND` values.

See Also:
  - Constant Field Values

### INTERVAL_YEAR_TO_MONTH

public static final int INTERVAL_YEAR_TO_MONTH
The value type for `INTERVAL YEAR TO MONTH` values.

See Also:
  - Constant Field Values

### INTERVAL_DAY_TO_HOUR

public static final int INTERVAL_DAY_TO_HOUR
The value type for `INTERVAL DAY TO HOUR` values.

See Also:
  - Constant Field Values

### INTERVAL_DAY_TO_MINUTE

public static final int INTERVAL_DAY_TO_MINUTE
The value type for `INTERVAL DAY TO MINUTE` values.

See Also:
  - Constant Field Values

### INTERVAL_DAY_TO_SECOND

public static final int INTERVAL_DAY_TO_SECOND
The value type for `INTERVAL DAY TO SECOND` values.

See Also:
  - Constant Field Values

### INTERVAL_HOUR_TO_MINUTE

public static final int INTERVAL_HOUR_TO_MINUTE
The value type for `INTERVAL HOUR TO MINUTE` values.

See Also:
  - Constant Field Values

### INTERVAL_HOUR_TO_SECOND

public static final int INTERVAL_HOUR_TO_SECOND
The value type for `INTERVAL HOUR TO SECOND` values.

See Also:
  - Constant Field Values

### INTERVAL_MINUTE_TO_SECOND

public static final int INTERVAL_MINUTE_TO_SECOND
The value type for `INTERVAL MINUTE TO SECOND` values.

See Also:
  - Constant Field Values

### JAVA_OBJECT

public static final int JAVA_OBJECT
The value type for JAVA_OBJECT values.

See Also:
  - Constant Field Values

### ENUM

public static final int ENUM
The value type for ENUM values.

See Also:
  - Constant Field Values

### GEOMETRY

public static final int GEOMETRY
The value type for string values with a fixed size.

See Also:
  - Constant Field Values

### JSON

public static final int JSON
The value type for JSON values.

See Also:
  - Constant Field Values

### UUID

public static final int UUID
The value type for UUID values.

See Also:
  - Constant Field Values

### ARRAY

public static final int ARRAY
The value type for ARRAY values.

See Also:
  - Constant Field Values

### ROW

public static final int ROW
The value type for ROW values.

See Also:
  - Constant Field Values

### TYPE_COUNT

public static final int TYPE_COUNT
The number of value types.

See Also:
  - Constant Field Values

### EMPTY_VALUES

public static final Value[] EMPTY_VALUES
Empty array of values.

### MAX_LONG_DECIMAL

public static final BigDecimal MAX_LONG_DECIMAL
The largest BIGINT value, as a BigDecimal.

### MIN_LONG_DECIMAL

public static final BigDecimal MIN_LONG_DECIMAL
The smallest BIGINT value, as a BigDecimal.

### CONVERT_TO

public static final int CONVERT_TO
Convert a value to the specified type without taking scale and precision into account.

See Also:
  - Constant Field Values

### CAST_TO

public static final int CAST_TO
Cast a value to the specified type. The scale is set if applicable. The value is truncated to a required precision.

See Also:
  - Constant Field Values

### ASSIGN_TO

public static final int ASSIGN_TO
Cast a value to the specified type for assignment. The scale is set if applicable. If precision is too large an exception is thrown.

See Also:
  - Constant Field Values

## Constructor Details

### Value

public Value()

## Method Details

### getTypeName

public static String getTypeName(int valueType)
Returns name of the specified data type.

Parameters:
  `valueType` - the value type
Returns:
  the name

### getType

public abstract TypeInfo getType()
Description copied from interface: `Typed`
Returns the data type.

Specified by:
  `getType` in interface `Typed`
Returns:
  the data type

### getValueType

public abstract int getValueType()
Get the value type.

Returns:
  the value type

### getMemory

public int getMemory()
Get the memory used by this object.

Returns:
  the memory used in bytes

### hashCode

public abstract int hashCode()

Overrides:
  `hashCode` in class `Object`

### equals

public abstract boolean equals(Object other)
Check if the two values have the same hash code. No data conversion is made; this method returns false if the other object is not of the same class. For some values, compareTo may return 0 even if equals return false. Example: ValueDecimal 0.0 and 0.00.

Overrides:
  `equals` in class `Object`
Parameters:
  `other` - the other value
Returns:
  true if they are equal

### getHigherOrder

public static int getHigherOrder(int t1, int t2)
Get the higher value order type of two value types. If values need to be converted to match the other operands value type, the value with the lower order is converted to the value with the higher order.

Parameters:
  `t1` - the first value type
  `t2` - the second value type
Returns:
  the higher value type of the two

### clearCache

public static void clearCache()
Clear the value cache. Used for testing.

### getString

public abstract String getString()
Get the value as a string.

Returns:
  the string

### getReader

public Reader getReader()

### getReader

public Reader getReader(long oneBasedOffset, long length)
Get the reader

Parameters:
  `oneBasedOffset` - the offset (1 means no offset)
  `length` - the requested length
Returns:
  the new reader

### getBytes

public byte[] getBytes()

### getBytesNoCopy

public byte[] getBytesNoCopy()

### getInputStream

public InputStream getInputStream()

### getInputStream

public InputStream getInputStream(long oneBasedOffset, long length)
Get the input stream

Parameters:
  `oneBasedOffset` - the offset (1 means no offset)
  `length` - the requested length
Returns:
  the new input stream

### getBoolean

public boolean getBoolean()
Returns this value as a Java `boolean` value.

Returns:
  value
Throws:
  `DbException` - if this value is `NULL` or cannot be casted to `BOOLEAN`
See Also:
  - `isTrue()`
  - `isFalse()`

### getByte

public byte getByte()
Returns this value as a Java `byte` value.

Returns:
  value
Throws:
  `DbException` - if this value is `NULL` or cannot be casted to `TINYINT`

### getShort

public short getShort()
Returns this value as a Java `short` value.

Returns:
  value
Throws:
  `DbException` - if this value is `NULL` or cannot be casted to `SMALLINT`

### getInt

public int getInt()
Returns this value as a Java `int` value.

Returns:
  value
Throws:
  `DbException` - if this value is `NULL` or cannot be casted to `INTEGER`

### getLong

public long getLong()
Returns this value as a Java `long` value.

Returns:
  value
Throws:
  `DbException` - if this value is `NULL` or cannot be casted to `BIGINT`

### getBigDecimal

public BigDecimal getBigDecimal()

### getFloat

public float getFloat()
Returns this value as a Java `float` value.

Returns:
  value
Throws:
  `DbException` - if this value is `NULL` or cannot be casted to `REAL`

### getDouble

public double getDouble()
Returns this value as a Java `double` value.

Returns:
  value
Throws:
  `DbException` - if this value is `NULL` or cannot be casted to `DOUBLE PRECISION`

### add

public Value add(Value v)
Add a value and return the result.

Parameters:
  `v` - the value to add
Returns:
  the result

### getSignum

public int getSignum()

### negate

public Value negate()
Return -value if this value support arithmetic operations.

Returns:
  the negative

### subtract

public Value subtract(Value v)
Subtract a value and return the result.

Parameters:
  `v` - the value to subtract
Returns:
  the result

### divide

public Value divide(Value v, TypeInfo quotientType)
Divide by a value and return the result.

Parameters:
  `v` - the divisor
  `quotientType` - the type of quotient (used only to read precision and scale when applicable)
Returns:
  the result

### multiply

public Value multiply(Value v)
Multiply with a value and return the result.

Parameters:
  `v` - the value to multiply with
Returns:
  the result

### modulus

public Value modulus(Value v)
Take the modulus with a value and return the result.

Parameters:
  `v` - the value to take the modulus with
Returns:
  the result

### convertTo

public final Value convertTo(int targetType)
Convert a value to the specified type without taking scale and precision into account.

Parameters:
  `targetType` - the type of the returned value
Returns:
  the converted value

### convertTo

public final Value convertTo(TypeInfo targetType)
Convert a value to the specified type without taking scale and precision into account.

Parameters:
  `targetType` - the type of the returned value
Returns:
  the converted value

### convertTo

public final Value convertTo(int targetType, CastDataProvider provider)
Convert a value to the specified type without taking scale and precision into account.

Parameters:
  `targetType` - the type of the returned value
  `provider` - the cast information provider
Returns:
  the converted value

### convertTo

public final Value convertTo(TypeInfo targetType, CastDataProvider provider)
Convert a value to the specified type without taking scale and precision into account.

Parameters:
  `targetType` - the type of the returned value
  `provider` - the cast information provider
Returns:
  the converted value

### convertTo

public final Value convertTo(TypeInfo targetType, CastDataProvider provider, Object column)
Convert a value to the specified type without taking scale and precision into account.

Parameters:
  `targetType` - the type of the returned value
  `provider` - the cast information provider
  `column` - the column, used to improve the error message if conversion fails
Returns:
  the converted value

### convertToAnyJson

public final ValueJson convertToAnyJson()
Convert this value to JSON data type.

Returns:
  a JSON value

### convertToAnyArray

public final ValueArray convertToAnyArray(CastDataProvider provider)
Convert this value to any ARRAY data type.

Parameters:
  `provider` - the cast information provider
Returns:
  a row value

### convertToAnyRow

public final ValueRow convertToAnyRow()
Convert this value to any ROW data type.

Returns:
  a row value

### castTo

public final Value castTo(TypeInfo targetType, CastDataProvider provider)
Cast a value to the specified type. The scale is set if applicable. The value is truncated to the required precision.

Parameters:
  `targetType` - the type of the returned value
  `provider` - the cast information provider
Returns:
  the converted value

### convertForAssignTo

public final Value convertForAssignTo(TypeInfo targetType, CastDataProvider provider, Object column)
Cast a value to the specified type for assignment. The scale is set if applicable. If precision is too large an exception is thrown.

Parameters:
  `targetType` - the type of the returned value
  `provider` - the cast information provider
  `column` - the column, used to improve the error message if conversion fails
Returns:
  the converted value

### convertToChar

public ValueChar convertToChar()
Converts this value to a CHAR value. May not be called on a NULL value.

Returns:
  a CHAR value.

### convertToBoolean

public final ValueBoolean convertToBoolean()
Converts this value to a BOOLEAN value. May not be called on a NULL value.

Returns:
  the BOOLEAN value

### convertToTinyint

public final ValueTinyint convertToTinyint(Object column)
Converts this value to a TINYINT value. May not be called on a NULL value.

Parameters:
  `column` - the column, used for to improve the error message if conversion fails
Returns:
  the TINYINT value

### convertToSmallint

public final ValueSmallint convertToSmallint(Object column)
Converts this value to a SMALLINT value. May not be called on a NULL value.

Parameters:
  `column` - the column, used for to improve the error message if conversion fails
Returns:
  the SMALLINT value

### convertToInt

public final ValueInteger convertToInt(Object column)
Converts this value to a INT value. May not be called on a NULL value.

Parameters:
  `column` - the column, used for to improve the error message if conversion fails
Returns:
  the INT value

### convertToBigint

public final ValueBigint convertToBigint(Object column)
Converts this value to a BIGINT value. May not be called on a NULL value.

Parameters:
  `column` - the column, used for to improve the error message if conversion fails
Returns:
  the BIGINT value

### convertToReal

public final ValueReal convertToReal()
Converts this value to a REAL value. May not be called on a NULL value.

Returns:
  the REAL value

### convertToDouble

public final ValueDouble convertToDouble()
Converts this value to a DOUBLE value. May not be called on a NULL value.

Returns:
  the DOUBLE value

### convertToDate

public final ValueDate convertToDate(CastDataProvider provider)
Converts this value to a DATE value. May not be called on a NULL value.

Parameters:
  `provider` - the cast information provider
Returns:
  the DATE value

### convertToJavaObject

public final ValueJavaObject convertToJavaObject(TypeInfo targetType, int conversionMode, Object column)
Converts this value to a JAVA_OBJECT value. May not be called on a NULL value.

Parameters:
  `targetType` - the type of the returned value
  `conversionMode` - conversion mode
  `column` - the column (if any), used to improve the error message if conversion fails
Returns:
  the JAVA_OBJECT value

### convertToEnum

public final ValueEnum convertToEnum(ExtTypeInfoEnum extTypeInfo, CastDataProvider provider)
Converts this value to an ENUM value. May not be called on a NULL value.

Parameters:
  `extTypeInfo` - the extended data type information
  `provider` - the cast information provider
Returns:
  the ENUM value

### convertToGeometry

public final ValueGeometry convertToGeometry(ExtTypeInfoGeometry extTypeInfo)
Converts this value to a GEOMETRY value. May not be called on a NULL value.

Parameters:
  `extTypeInfo` - the extended data type information, or null
Returns:
  the GEOMETRY value

### convertToJson

public ValueJson convertToJson(TypeInfo targetType, int conversionMode, Object column)
Converts this value to a JSON value. May not be called on a NULL value.

Parameters:
  `targetType` - the type of the returned value
  `conversionMode` - conversion mode
  `column` - the column (if any), used to improve the error message if conversion fails
Returns:
  the JSON value

### convertToUuid

public final ValueUuid convertToUuid()
Converts this value to a UUID value. May not be called on a NULL value.

Returns:
  the UUID value

### compareTypeSafe

public abstract int compareTypeSafe(Value v, CompareMode mode, CastDataProvider provider)
Compare this value against another value given that the values are of the same data type.

Parameters:
  `v` - the other value
  `mode` - the compare mode
  `provider` - the cast information provider
Returns:
  0 if both values are equal, -1 if the other value is smaller, and 1 otherwise

### compareTo

public final int compareTo(Value v, CastDataProvider provider, CompareMode compareMode)
Compare this value against another value using the specified compare mode.

Parameters:
  `v` - the other value
  `provider` - the cast information provider
  `compareMode` - the compare mode
Returns:
  0 if both values are equal, -1 if this value is smaller, and 1 otherwise

### compareWithNull

public int compareWithNull(Value v, boolean forEquality, CastDataProvider provider, CompareMode compareMode)
Compare this value against another value using the specified compare mode.

Parameters:
  `v` - the other value
  `forEquality` - perform only check for equality
  `provider` - the cast information provider
  `compareMode` - the compare mode
Returns:
  0 if both values are equal, -1 if this value is smaller, 1 if other value is larger, `Integer.MIN_VALUE` if order is not defined due to NULL comparison

### containsNull

public boolean containsNull()
Returns true if this value is NULL or contains NULL value.

Returns:
  true if this value is NULL or contains NULL value

### getValueWithFirstNull

public Value getValueWithFirstNull(Value v)
Scans this and specified values until a first NULL occurrence and returns a value where NULL appears earlier, or `null` if these two values have first NULL on the same position.

Parameters:
  `v` - a value of the same data type as this value, must be neither equal to nor smaller than nor greater than this value
Returns:
  this value, the specified value, or `null`

### convertToInt

public static int convertToInt(long x, Object column)
Convert to integer, throwing exception if out of range.

Parameters:
  `x` - integer value.
  `column` - Column info.
Returns:
  x

### convertToLong

public static long convertToLong(BigDecimal x, Object column)
Convert to long, throwing exception if out of range.

Parameters:
  `x` - long value.
  `column` - Column info.
Returns:
  x

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### getUnsupportedExceptionForOperation

protected final DbException getUnsupportedExceptionForOperation(String op)
Create an exception meaning the specified operation is not supported for this data type.

Parameters:
  `op` - the operation
Returns:
  the exception

### charLength

public long charLength()
Returns length of this value in characters.

Returns:
  length of this value in characters
Throws:
  `NullPointerException` - if this value is `NULL`

### octetLength

public long octetLength()
Returns length of this value in bytes.

Returns:
  length of this value in bytes
Throws:
  `NullPointerException` - if this value is `NULL`

### isTrue

public final boolean isTrue()
Returns whether this value `IS TRUE`.

Returns:
  `true` if it is. For `BOOLEAN` values returns `true` for `TRUE` and `false` for `FALSE` and `UNKNOWN` (`NULL`).
See Also:
  - `getBoolean()`
  - `isFalse()`

### isFalse

public final boolean isFalse()
Returns whether this value `IS FALSE`.

Returns:
  `true` if it is. For `BOOLEAN` values returns `true` for `FALSE` and `false` for `TRUE` and `UNKNOWN` (`NULL`).
See Also:
  - `getBoolean()`
  - `isTrue()`