Hexadecimal Character Literals | Data Types and Literals | Teradata Vantage - Hexadecimal Character Literals - Advanced SQL Engine - Teradata Database

SQL Data Types and Literals

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
June 2020
Language
English (United States)
Last Update
2021-01-22
dita:mapPath
zsn1556242031050.ditamap
dita:ditavalPath
lze1555437562152.ditaval
dita:id
B035-1143
lifecycle
previous
Product Category
Teradata Vantage™

Declares a hexadecimal character literal value.

Syntax

[ _character_set ] 'hexadecimal digits' XC [ V | F ]
_character_set
{ _Latin | _Unicode | _KanjiSJIS | _Graphic }
The characters represented by the hexadecimal literal are within the repertoire of this (optional) character set. The default is the user default character set. Supported character sets are as follows:
  • _Latin specifies the LATIN character set.
  • _Unicode specifies the UNICODE character set.
  • _Graphic specifies the GRAPHIC character set.
  • _KanjiSJIS specifies the KANJISJIS character set.
Teradata Database is transitioning to the Unicode delimited character literal and is no longer supporting the KANJI1(_Kanji1) form of the hexadecimal character literal. Its use should be discontinued and Unicode delimited character literals should be used instead.
hexadecimal digits
A string of hexadecimal digits, where a hexadecimal digit is a character from 0 to 9, a to f, or A to F.
V
The hexadecimal literal is in character variable format. This is the default if V or F is not specified.
F
The hexadecimal literal is in character fixed format.

ANSI Compliance

Hexadecimal character literals are Teradata extensions to the ANSI SQL:2011 standard.

Definition

Hexadecimal literals consist of 0 to 31000 hexadecimal digits delimited by a matching pair of apostrophes, where a hexadecimal digit is a character from 0 to 9, a to f, or A to F.

Data Types

The modifier following the XC determines the hexadecimal literal data type.

IF a hexadecimal literal uses this form … THEN the data type is …
'hexadecimal digits'XC

'hexadecimal digits'XCV

VARCHAR
'hexadecimal digits'XCF CHAR

Usage Notes

A hexadecimal character literal is useful for inserting character strings, such as TAB or BACKSPACE, that cannot generally be entered directly on the terminal keyboard.

The following apply to hexadecimal literals:
  • Hexadecimal character literals are represented by an even number of hexadecimal digits. Hexadecimal literals are extended on the right with zeros when semantically required. For example:
    _Latin 'C1C'XC = 'C1C0'XC
  • As with other character literals, hexadecimal character literals are translated to UNICODE internal form, unless the character set is KANJI1, and then the hexadecimal literal is kept in KANJI1 internal form.
  • When a hexadecimal character string is interpreted as _Unicode either explicitly or because it was the default character set, the form of the data is interpreted as UTF-16. Therefore properly paired surrogates, such as _Unicode ‘D800DC00’XC, are treated as supplementary code points and can be used in sessions with Unicode Pass Through enabled. For information about Unicode Pass Through, see Teradata Vantage™ - Advanced SQL Engine International Character Set Support, B035-1125.
  • Multiple consecutive character literals (character literals, hexadecimal character literals, and Unicode delimited character literals) are treated as if the strings are concatenated.

Example: Hexadecimal Character Literal

Assume the user default character set is Latin. If the terminal keyboard does not include the brace characters {}, use the following hexadecimal literal to represent “{12}”:

'7B31327D'XC

where 7B represents the brace "{" and 7D represents the brace "}".