CHR() Function in Oracle

In Oracle, the CHR() function returns a character based on the code values provided as an argument.

More specifically, it returns the character having the binary equivalent to its argument as a VARCHAR2 value in either the database character set or, if you specify USING NCHAR_CS, the national character set.

Syntax

The syntax goes like this:

CHR(n [ USING NCHAR_CS ])

Where n is a NUMBER value, or any value that can be implicitly converted to NUMBER.

The USING NCHAR_CS argument is an optional argument that allows you to specify the national character set.

Example

Here’s a simple example to demonstrate:

SELECT CHR(65)
FROM DUAL;

Result:

   CHR(65) 
__________ 
A         

Here I provided a number, and CHR() returned the corresponding character. In this case, the integer 65 maps to the uppercase letter A.

Case Sensitivity

Here’s an example that distinguishes an uppercase letter from its lowercase counterpart:

SELECT 
    CHR(72),
    CHR(104)
FROM DUAL;

Result:

   CHR(72)    CHR(104) 
__________ ___________ 
H          h           

Return a Multiple Character String

To produce a multi-character string, we can concatenate multiple CHR() functions:

Example:

SELECT CHR(65) || CHR(77)
FROM DUAL;

Result:

   CHR(65)||CHR(77) 
___________________ 
AM                  

The NCHAR_CS Argument

Here’s an example of passing the (optional) second argument:

SELECT CHR (257 USING NCHAR_CS)
FROM DUAL;

Result:

   CHR(257USINGNCHAR_CS) 
________________________ 
ā                       

This is the same as using the NCHR() function.

Null Values

Passing null returns null:

SET NULL 'null';

SELECT CHR(null)
FROM DUAL;

Result:

   CHR(NULL) 
____________ 
null        

By default, SQLcl and SQL*Plus return a blank space whenever null occurs as a result of a SQL SELECT statement.

However, you can use SET NULL to specify a different string to be returned. Here I specified that the string null should be returned.

Incorrect Argument Count

Calling CHR() without passing any arguments returns an error:

SELECT CHR()
FROM DUAL;

Result:

Error starting at line : 1 in command -
SELECT CHR()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

And passing the wrong number of arguments results in an error:

SELECT CHR(1, 2, 3)
FROM DUAL;

Result:

Error starting at line : 1 in command -
SELECT CHR(1, 2, 3)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action: