This function converts an int ASCII code to a character value.
Transact-SQL Syntax Conventions
CHAR ( integer_expression )
integer_expression
An integer from 0 through 255. CHAR
returns a NULL
value for integer expressions outside this range, or when then integer expresses only the first byte of a double-byte character.
[!NOTE] Some non-European character sets, such as Shift Japanese Industrial Standards, include characters than can be represented in a single-byte coding scheme, but require multibyte encoding. For more information on character sets, refer to Single-Byte and Multibyte Character Sets.
char(1)
Use CHAR
to insert control characters into character strings. This table shows some frequently used control characters.
Control character | Value |
---|---|
Tab | char(9) |
Line feed | char(10) |
Carriage return | char(13) |
This example prints the ASCII value and character for each character in the string New Moon
.
SET TEXTSIZE 0;
-- Create variables for the character string and for the current
-- position in the string.
DECLARE @position int, @string char(8);
-- Initialize the current position and the string variables.
SET @position = 1;
SET @string = 'New Moon';
WHILE @position <= DATALENGTH(@string)
BEGIN
SELECT ASCII(SUBSTRING(@string, @position, 1)),
CHAR(ASCII(SUBSTRING(@string, @position, 1)))
SET @position = @position + 1
END;
GO
Here is the result set.
----------- -
78 N
----------- -
101 e
----------- -
119 w
----------- -
32
----------- -
77 M
----------- -
111 o
----------- -
111 o
----------- -
110 n
This example uses CHAR(13)
to print the name and e-mail address of an employee on separate lines, when the query returns its results as text. This example uses the AdventureWorks2012 database.
SELECT p.FirstName + ' ' + p.LastName, + CHAR(13) + pe.EmailAddress
FROM Person.Person p
INNER JOIN Person.EmailAddress pe ON p.BusinessEntityID = pe.BusinessEntityID
AND p.BusinessEntityID = 1;
GO
Here is the result set.
Ken Sanchez
ken0@adventure-works.com
(1 row(s) affected)
This example assumes an ASCII character set. It returns the character value for six different ASCII character number values.
SELECT CHAR(65) AS [65], CHAR(66) AS [66],
CHAR(97) AS [97], CHAR(98) AS [98],
CHAR(49) AS [49], CHAR(50) AS [50];
Here is the result set.
65 66 97 98 49 50
---- ---- ---- ---- ---- ----
A B a b 1 2
This example uses CHAR(13)
to return information from sys.databases on separate lines, when the query returns its results as text.
SELECT name, 'was created on ', create_date, CHAR(13), name, 'is currently ', state_desc
FROM sys.databases;
GO
Here is the result set.
name create_date name state_desc
--------------------------------------------------------------------------------------------------------------------
master was created on 2003-04-08 09:13:36.390 master is currently ONLINE
tempdb was created on 2014-01-10 17:24:24.023 tempdb is currently ONLINE
AdventureWorksPDW2012 was created on 2014-05-07 09:05:07.083 AdventureWorksPDW2012 is currently ONLINE
This example uses the integer and hex values in the valid range for ASCII. The CHAR function is able to output the single-byte Japanese character.
SELECT CHAR(188) AS single_byte_representing_complete_character,
CHAR(0xBC) AS single_byte_representing_complete_character;
GO
Here is the result set.
single_byte_representing_complete_character single_byte_representing_complete_character
------------------------------------------- -------------------------------------------
シ シ
This example uses the an integer and hex values in the valid range for ASCII. However, the CHAR function returns NULL because the parameter represents only the first byte of a multibyte character.
SELECT CHAR(129) AS first_byte_of_double_byte_character,
CHAR(0x81) AS first_byte_of_double_byte_character;
GO
Here is the result set.
first_byte_of_double_byte_character first_byte_of_double_byte_character
----------------------------------- -----------------------------------
NULL NULL
ASCII (Transact-SQL)
NCHAR (Transact-SQL)
UNICODE (Transact-SQL)
+ (String Concatenation) (Transact-SQL)
String Functions (Transact-SQL)