DECOMPOSE takes as its first argument a character value
string and returns the result of applying one of the Unicode decompositions to it. The decomposition to apply is determined by the second, optional parameter. If the character set of the first argument is not one of the Unicode character sets,
DECOMPOSE returns the argument unmodified.
If the second argument to
DECOMPOSE is the string
DECOMPOSE applies canonical decomposition, as described in the Unicode Standard definition D68, and returns a string in the NFD normalization form. If the second argument is the string
DECOMPOSE applies compatibility decomposition, as described in the Unicode Standard definition D65, and returns a string in the NFKD normalization form. The default behavior is to apply the canonical decomposition.
In a pessimistic case, the return value of
DECOMPOSE may be a few times longer than
string. If a string to be returned is longer than the maximum length
VARCHAR2 value in a given runtime environment, the value is silently truncated to the maximum
Both arguments to
DECOMPOSE can be of any of the data types
NVARCHAR2. Other data types are allowed if they can be implicitly converted to
NVARCHAR2. The return value of
DECOMPOSE is in the same character set as its first argument.
NCLOB values are supported through implicit conversion. If
string is a character LOB value, then it is converted to a
VARCHAR2 value before the
DECOMPOSE operation. The operation will fail if the size of the LOB value exceeds the supported length of the
VARCHAR2 in the particular execution environment.
The following example decomposes the string "
Châteaux" into its component code points:
SELECT DECOMPOSE ('Châteaux') FROM DUAL; DECOMPOSE --------- Châteaux
The results of this example can vary depending on the character set of your operating system.