CHAR (Transact-SQL)
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric
Hiermit wird das Einzelbytezeichen gemäß Zeichensatz und Codierung der Standardsortierung der aktuellen Datenbank mit dem angegebenen ganzzahligen Code zurückgegeben.
Transact-SQL-Syntaxkonventionen
Syntax
CHAR ( integer_expression )
Hinweis
Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) oder früher finden Sie unter Dokumentation zu früheren Versionen.
Argumente
integer_expression
Eine ganze Zahl zwischen 0 und 255. CHAR
gibt einen NULL
-Wert für ganzzahlige Ausdrücke zurück, die außerhalb dieses Eingabebereichs liegen oder kein vollständiges Zeichen darstellen.
CHAR
gibt außerdem einen NULL
-Wert zurück, wenn das Zeichen die Länge des Rückgabetyps überschreitet.
Viele gängige Zeichensätze nutzen ASCII als Teilmenge und geben das gleiche Zeichen für ganzzahlige Werte im Bereich 0 bis 127 zurück.
Hinweis
Einige Zeichensätze (z. B. Unicode und Shift Japanese Industrial Standards) enthalten Zeichen, die in einem Einzelbytecodierungsschema dargestellt werden können, aber eine Multibytecodierung erfordern. Weitere Informationen zu Zeichensätzen finden Sie unter Einzelbyte- und Mehrbyte-Zeichensätze.
Rückgabetypen
char(1)
Hinweise
Verwenden Sie CHAR
, um Steuerzeichen in Zeichenfolgen einzufügen. In dieser Tabelle finden Sie einige häufig verwendete Steuerzeichen.
Steuerzeichen | Wert |
---|---|
Registerkarte | char(9) |
Zeilenvorschub | char(10) |
Wagenrücklauf | char(13) |
Beispiele
A. Verwenden von ASCII und CHAR, um die ASCII-Werte einer Zeichenfolge auszugeben
In diesem Beispiel werden der ASCII-Wert und das Zeichen für jedes in der Zeichenfolge New Moon
enthaltene Zeichen ausgegeben.
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
Hier ist das Resultset.
----------- -
78 N
----------- -
101 e
----------- -
119 w
----------- -
32
----------- -
77 M
----------- -
111 o
----------- -
111 o
----------- -
110 n
B. Verwenden von CHAR, um ein Steuerzeichen einzufügen
In diesem Beispiel wird CHAR(13)
verwendet, um den Namen und die E-Mail-Adresse eines Mitarbeiters in separaten Zeilen auszugeben, wenn die Ergebnisse der Abfrage als Text zurückgegeben werden. In diesem Beispiel wird die AdventureWorks2022-Datenbank verwendet.
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
Hier ist das Resultset.
Ken Sanchez
ken0@adventure-works.com
(1 row(s) affected)
C. Verwenden von ASCII und CHAR, um die ASCII-Werte einer Zeichenfolge auszugeben
Dieses Beispiel geht von einem ASCII-Zeichensatz aus. Es gibt den Zeichenwert für sechs verschiedene Zahlenwerte von ASCII-Zeichen zurück.
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];
Hier ist das Resultset.
65 66 97 98 49 50
---- ---- ---- ---- ---- ----
A B a b 1 2
D: Verwenden von CHAR, um ein Steuerzeichen einzufügen
In diesem Beispiel wird CHAR(13)
verwendet, um Informationen von „sys.databases“ in separaten Zeilen zurückzugeben, wenn die Ergebnisse der Abfrage als Text zurückgegeben werden.
SELECT name, 'was created on ', create_date, CHAR(13), name, 'is currently ', state_desc
FROM sys.databases;
GO
Hier ist das Resultset.
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
E. Verwenden von CHAR zum Zurückgeben von Einzelbytezeichen
Dieses Beispiel verwendet die Ganzzahl- und hexadezimal Werte im gültigen Bereich für ASCII. Die CHAR-Funktion kann japanische Einzelbytezeichen ausgeben.
SELECT CHAR(188) AS single_byte_representing_complete_character,
CHAR(0xBC) AS single_byte_representing_complete_character;
GO
Hier ist das Resultset.
single_byte_representing_complete_character single_byte_representing_complete_character
------------------------------------------- -------------------------------------------
シ シ
F. Verwenden von CHAR zum Zurückgeben von Mehrbytezeichen
In diesem Beispiel werden ganzzahlige und hexadezimale Werte im gültigen Bereich für erweiterte ASCII-Zeichen verwendet.
Die Funktion CHAR
gibt jedoch NULL
zurück, da der Parameter nur das erste Byte eines Multibytezeichens darstellt.
Ein CHAR(2)-Doppelbytezeichen kann ohne Konvertierungsvorgang weder teilweise noch getrennt dargestellt werden.
Die einzelnen Bytes eines Doppelbytezeichens stellen im Allgemeinen keine gültigen CHAR(1)-Werte dar.
SELECT CHAR(129) AS first_byte_of_double_byte_character,
CHAR(0x81) AS first_byte_of_double_byte_character;
GO
Hier ist das Resultset.
first_byte_of_double_byte_character first_byte_of_double_byte_character
----------------------------------- -----------------------------------
NULL NULL
G. Verwenden von CONVERT anstelle von CHAR für die Rückgabe von Multibytezeichen
In diesem Beispiel wird der binäre Wert, abhängig von der Validierung, als codiertes Multibytezeichen gemäß der Standardcodepage der aktuellen Datenbank akzeptiert. Die Zeichenkonvertierung wird umfassender unterstützt und stellt möglicherweise eine Alternative für die Arbeit mit Codierungen auf niedrigerer Ebene dar.
CREATE DATABASE [multibyte-char-context]
COLLATE Japanese_CI_AI
GO
USE [multibyte-char-context]
GO
SELECT NCHAR(0x266A) AS [eighth-note]
, CONVERT(CHAR(2), 0x81F4) AS [context-dependent-convert]
, CAST(0x81F4 AS CHAR(2)) AS [context-dependent-cast]
Hier ist das Resultset.
eighth-note context-dependent-convert context-dependent-cast
----------- ------------------------- ----------------------
♪ ♪ ♪
H. Verwenden von NCHAR anstelle von CHAR für die Suche nach UTF-8-Zeichen
In diesem Beispiel wird die Unterscheidung hervorgehoben, die der Unicode-Standard zwischen dem Codepunkt und der Codeeinheitssequenz des Zeichens bei einem bestimmten Codierungsformat macht. Der binäre Code, der einem Zeichen in einem klassischen Zeichensatz zugewiesen ist, ist dessen einziger numerischer Bezeichner. Im Gegensatz dazu ist die UTF-8-Bytesequenz, die einem Zeichen zugeordnet ist, eine algorithmische Codierung des zugewiesenen numerischen Bezeichners, also des Codepunkts. char (UTF-8) und nchar (UTF-16) sind unterschiedliche Codierungsformate mit 8-Bit- bzw. 16-Bit-Codeeinheiten desselben Zeichensatzes: der Datenbank der Unicode-Zeichen (Unicode Character Database).
; WITH uni(c) AS (
-- BMP character
SELECT NCHAR(9835)
UNION ALL
-- non-BMP supplementary character or, under downlevel collation, NULL
SELECT NCHAR(127925)
),
enc(u16c, u8c) AS (
SELECT c, CONVERT(VARCHAR(4), c COLLATE Latin1_General_100_CI_AI_SC_UTF8)
FROM uni
)
SELECT u16c AS [Music note]
, u8c AS [Music note (UTF-8)]
, UNICODE(u16c) AS [Code Point]
, CONVERT(VARBINARY(4), u16c) AS [UTF-16LE bytes]
, CONVERT(VARBINARY(4), u8c) AS [UTF-8 bytes]
FROM enc
Hier ist das Resultset. . Generiert unter einer _SC
-Sortierung mit zusätzlicher Zeichenunterstützung.
Music note Music note (UTF-8) Code Point UTF-16LE bytes UTF-8 bytes
---------- ------------------ ----------- -------------- -----------
♫ ♫ 9835 0x6B26 0xE299AB
🎵 🎵 127925 0x3CD8B5DF 0xF09F8EB5
Weitere Informationen
ASCII (Transact-SQL)
NCHAR (Transact-SQL)
UNICODE (Transact-SQL)
+ (Verketten von Zeichenfolgen) (Transact-SQL)
Zeichenfolgenfunktionen (Transact-SQL)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für