Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric
Geeft het enkelbyte-teken terug met de gespecificeerde gehele code, zoals gedefinieerd door de tekenset en codering van de standaardcollatie van de huidige database.
Transact-SQL syntaxis-conventies
Syntaxis
CHAR ( integer_expression )
Arguments
integer_expression
Een geheel getal van 0 tot en met 255.
CHAR geeft een NULL waarde terug voor gehele expressies buiten dit invoerbereik of die geen volledig karakter vertegenwoordigen.
CHAR geeft ook een NULL waarde terug wanneer het teken de lengte van het retourtype overschrijdt.
Veel veelvoorkomende tekensets delen ASCII als deelverzameling en geven hetzelfde teken terug voor gehele waarden in het bereik 0 tot en met 127.
Opmerking
Sommige tekensets, zoals Unicode en Shift Japanese Industrial Standards, bevatten tekens die in een single-byte coderingsschema kunnen worden weergegeven, maar multibyte-codering vereisen. Voor meer informatie over tekenreeksen, zie Single-Byte en Multibyte Character Sets.
Retourtypen
char(1)
Opmerkingen
Gebruik CHAR het om controletekens in tekenreeksen in te voegen. Deze tabel toont enkele veelgebruikte controlekarakters.
| Besturingselementteken | Waarde |
|---|---|
| Tab | char(9) |
| Ruimte | char(32) |
| Lijninvoer | char(10) |
| Regelterugloop | char(13) |
Voorbeelden
Eén. Gebruik ASCII en CHAR om ASCII-waarden uit een string af te drukken
Dit voorbeeld print de ASCII-waarde en het teken voor elk teken in de 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
Hier is het resultatenoverzicht.
----------- -
78 N
----------- -
101 e
----------- -
119 w
----------- -
32
----------- -
77 M
----------- -
111 o
----------- -
111 o
----------- -
110 n
B. Gebruik CHAR om een besturingskarakter in te voegen
Dit voorbeeld gebruikt CHAR(13) het afdrukken van de naam en het e-mailadres van een medewerker op aparte regels, wanneer de zoekopdracht zijn resultaten als tekst teruggeeft. Dit voorbeeld gebruikt de AdventureWorks2025-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
Hier is het resultatenoverzicht.
Ken Sanchez
ken0@adventure-works.com
C. Gebruik ASCII en CHAR om ASCII-waarden uit een string af te drukken
Dit voorbeeld gaat uit van een ASCII-tekenset. Het geeft de karakterwaarde terug voor zes verschillende ASCII-karakternummerwaarden.
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 is het resultatenoverzicht.
65 66 97 98 49 50
---- ---- ---- ---- ---- ----
A B a b 1 2
D. Gebruik CHAR om een besturingskarakter in te voegen
Dit voorbeeld gebruikt CHAR(13) om informatie terug te geven van sys.databases op aparte regels, wanneer de zoekopdracht zijn resultaten als tekst teruggeeft.
SELECT name, 'was created on ',
create_date,
CHAR(13),
name,
'is currently ',
state_desc
FROM sys.databases;
GO
Hier is het resultatenoverzicht.
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. Gebruik CHAR om single-byte tekens terug te geven
Dit voorbeeld gebruikt de gehele en hex-waarden in het geldige bereik voor ASCII. De CHAR-functie kan het Japanse teken met één byte uitvoeren.
SELECT CHAR(188) AS single_byte_representing_complete_character,
CHAR(0xBC) AS single_byte_representing_complete_character;
GO
Hier is het resultatenoverzicht.
single_byte_representing_complete_character single_byte_representing_complete_character
------------------------------------------- -------------------------------------------
シ シ
F. Gebruik CHAR om multibyte-tekens terug te geven
Dit voorbeeld gebruikt gehele en hex-waarden in het geldige bereik voor Extended ASCII. De functie geeft echter CHAR een retour NULL omdat de parameter alleen de eerste byte van een multibyte-teken vertegenwoordigt. Een karakter(2) dubbelbyte karakter kan niet gedeeltelijk worden weergegeven of gedeeld zonder een conversiebewerking. De individuele bytes van een dubbelbyte-teken vertegenwoordigen over het algemeen geen geldige char(1) -waarden.
SELECT CHAR(129) AS first_byte_of_double_byte_character,
CHAR(0x81) AS first_byte_of_double_byte_character;
GO
Hier is het resultatenoverzicht.
first_byte_of_double_byte_character first_byte_of_double_byte_character
----------------------------------- -----------------------------------
NULL NULL
G. Gebruik CONVERT in plaats van CHAR om multibyte-tekens terug te geven
Dit voorbeeld accepteert de binaire waarde als een gecodeerd multibyte-teken dat consistent is met de standaardcodepage van de huidige database, onder voorbehoud van validatie. Karakterconversie wordt breder ondersteund en kan een alternatief zijn voor werken met codering op een lager niveau.
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 is het resultatenoverzicht.
eighth-note context-dependent-convert context-dependent-cast
----------- ------------------------- ----------------------
♪ ♪ ♪
H. Gebruik NCHAR in plaats van CHAR om UTF-8-personages op te zoeken
Dit voorbeeld benadrukt het onderscheid dat de Unicode-standaard maakt tussen het codepunt van een teken en de code-eenheidsreeks onder een gegeven coderingsvorm. De binaire code die aan een teken in een klassieke tekenset is toegewezen, is de enige numerieke identificatie.
Daarentegen is de UTF-8 byte-reeks die aan een teken is gekoppeld een algoritmische codering van de toegewezen numerieke identificatie: het codepunt. UTF-8 char en UTF-16 nchar zijn verschillende coderingsvormen die 8-bits en 16-bits code-eenheden gebruiken, met dezelfde tekenset: de 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 is het resultatenoverzicht. Deze resultaten worden gegenereerd in een samenvoeging _SC met aanvullende karakterondersteuning.
| Muzieknoot | Muzieknoot (UTF-8) | Codepunt | UTF-16LE bytes | UTF-8 bytes |
|---|---|---|---|---|
| ♫ | ♫ | 9835 | 0x6B26 | 0xE299AB |
| 🎵 | 🎵 | 127925 | 0x3CD8B5DF | 0xF09F8EB5 |