Literal, i.e. fixed data, values may be given for any of the data types supported in SQL statements, wherever the term literal appears in the syntax diagrams.
String literals may be represented in three ways: as character-string-literals, national character-string-literals or hexadecimal-string-literals.
A character-string-literal consists of a sequence of characters enclosed in string delimiters. The standard string delimiter is the single quotation mark: '. Two consecutive single quotation marks within a string are interpreted as a single quotation mark.
- Note: An empty string (i.e. '') is a defined value. It is not NULL.
Only characters in the ISO 8859-1 character set (LATIN1) may be included in a character-string-literal.
A national-character-string-literal consists of a sequence of Unicode characters enclosed in string delimiters and preceded by the letter N. The standard string delimiter is the single quotation mark: '. Two consecutive single quotation marks within a string are interpreted as a single quotation mark. The case of the preceding N is irrelevant.
- Note: An empty string (i.e. N'') is a defined value. It is not NULL.
A hexadecimal-string-literal is a string specified as a sequence of hexadecimal values, enclosed in single quotation marks and preceded by the letter X. The sequence of values must contain an even number of positions (every character in the string literal is represented by a two-position value), and may not contain any characters other than the digits 0-9 and the letters A-F. The case of letters (and of the preceding X) is irrelevant. The code values for characters are those which apply in the host system.
For character, national-character and hexadecimal-string-literals, you can use a separator within the literal to join two or more substrings. Separators are described in Characters.
This is particularly useful when a string literal extends over more than one physical line, or when control codes are to be combined with character sequences.
ASCII codes are used for the hexadecimal literals:
'ABCD' ABCD 'Mimer''s' Mimer's 'data'<LF>'base' database X'0D0A09' <CR><LF><TAB> X'0D0A'<LF>'09' <CR><LF><TAB>
Note: Since the SQL-92 standard states that a hexadecimal-string is a bit-string and Mimer SQL currently does not support the BIT data type, it is advisable to explicitly type cast hexadecimal strings to the CHARACTER data type to assure forward compatibility. This is done with the CAST specification described in Assignments.
Numerical Integer Literals
A numerical integer literal is a signed or unsigned number that does not include a decimal point. The sign is a plus (+) or minus (-) sign immediately preceding the first digit.
In determining the precision of an integer literal, leading zeros are significant (i.e. the literal 007 has precision 3).
Numerical Decimal Literals
A numerical decimal literal is a signed or unsigned number containing exactly one decimal point.
In determining the precision and scale of a decimal literal, both leading and trailing zeros are significant (i.e. the literal 003.1400 has precision 7, scale 4).
Numerical Floating Point Literals
Floating point literals are represented in exponential notation, with a signed or unsigned integer or decimal mantissa, followed by an letter E, followed in turn by a signed or unsigned integer exponent.
The base for the exponent is always 10. The exponent zero may be used. The case of the letter E is irrelevant.
In determining the precision of a floating point literal, leading zeros in the mantissa are significant (i.e. the literal 007E4 has precision 3).
DATE, TIME and TIMESTAMP Literals
A literal that represents a DATE, TIME or TIMESTAMP value consists of the corresponding keyword shown below, followed by text enclosed in single quotes ('').
The following formats are allowed:
TIMESTAMP 'date-value <space> time-value'
A date-value has the following format:year-value - month-value - day-value
A time-value has the following format:hour-value : minute-value : second-value
where second-value has the following format:whole-seconds-value [. fractional-seconds-value]
The year-value, month-value, day-value, hour-value, minute-value, whole-seconds-value and fractional-seconds-value are all unsigned integers.
A year-value contains exactly 4 digits, a fractional-seconds-value may contain up to 9 digits and all the other components each contain exactly 2 digits.
TIMESTAMP '1997-02-14 10:59:23.4567'
TIMESTAMP '1928-12-25 23:59:30'
An interval literal represents an interval value and consists of the keyword INTERVAL followed by text enclosed in single quotes, in the following format:
INTERVAL '[+ | -] interval-value' interval-qualifier
The interval-value text must be a valid representation of a value compatible with the INTERVAL data type specified by the interval-qualifier, see Interval Qualifiers.
- If the interval precision includes the YEAR and MONTH fields, the values of these fields should be separated by a minus sign.
- If the interval precision includes the DAY and HOUR fields, the values of these fields should be separated by a space.
- If the interval precision includes the HOUR fields and another field of lower significance (MINUTE and/or SECOND), the values of these fields should be separated by a colon.
- All fields may contain up to 2 digits except that:
- The number of digits in the most significant field must not exceed the leading precision defined by the interval-qualifier. If a leading precision is not explicitly specified in the interval-qualifier, the default (2) applies.
- The SECOND field may have a fractional part, whose maximum length is defined by the interval-qualifier.
This section summarizes standard compliance concerning literals.
EXTENDED The presence of a newline character (<LF>) between substrings in a character-r or hexadecimal-string-literal is not mandatory in Mimer SQL.Hexadecimal string literals are of type BINARY because Mimer SQL does not support the BIT data type.
Upright Database Technology AB
Voice: +46 18 780 92 00
Fax: +46 18 780 92 40