Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Az egybájtos karaktert adja vissza a megadott egész számkóddal, ahogy azt a jelenlegi adatbázis alapértelmezett összeállításának karakterkészlete és kódolása határozza meg.
Transact-SQL szintaxis konvenciók
Szemantika
CHAR ( integer_expression )
Arguments
integer_expression
Egy egész szám 0-tól 255-ig.
CHAR Egész számkifejezéseket ad NULL vissza, amelyek ezen a bemeneti tartományon kívül esnek, vagy nem teljes karaktert képviselnek.
CHAR akkor is értéket NULL ad vissza, ha a karakter meghaladja a visszaküldési típus hosszát.
Sok gyakori karakterkészlet osztozik az ASCII-vel részhalmazként, és ugyanazt a karaktert adja vissza egész számok értékeire a 0-tól 127-ig terjedő tartományban.
Megjegyzés:
Néhány karakterkészlet, mint például a Unicode és a Shift Japanese Industrial Standards, olyan karaktereket tartalmaz, amelyek egybájtos kódolási sémában is ábrázolhatók, de többbájtos kódolást igényelnek. További információ a karakterkészletekkel kapcsolatban: Single-Byte és többbájtos karakterkészletek.
Visszatérési típusok
char(1)
Megjegyzések
Használd CHAR vezérlő karakterek beillesztésére karakterláncokba. Ez a táblázat néhány gyakran használt vezérlő karaktert mutat be.
| Vezérlő karakter | Érték |
|---|---|
| Tab | char(9) |
| Space | char(32) |
| Vonalbeadás | char(10) |
| Kocsivisszatérítés | char(13) |
Példák
A. Használj ASCII-t és CHAR-t ASCII értékek nyomtatásához egy stringből
Ez a példa kinyomtatja az ASCII értéket és karaktert minden karakterhez a stringben 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
Itt van az eredmények összessége.
----------- -
78 N
----------- -
101 e
----------- -
119 w
----------- -
32
----------- -
77 M
----------- -
111 o
----------- -
111 o
----------- -
110 n
B. Használj CHAR-t vezérlő karakter beadására
Ez a példa CHAR(13) egy alkalmazott nevét és e-mail címét külön sorokra nyomtatja, amikor a lekérdezés szöveges formátumban adja vissza az eredményt. Ez a példa az AdventureWorks2025 adatbázist használja.
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
Itt van az eredmények összessége.
Ken Sanchez
ken0@adventure-works.com
C. Használj ASCII-t és CHAR-t ASCII értékek nyomtatásához egy stringből
Ez a példa ASCII karakterhalmazt feltételez. Hat különböző ASCII karakterszám értéket adja vissza.
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];
Itt van az eredmények összessége.
65 66 97 98 49 50
---- ---- ---- ---- ---- ----
A B a b 1 2
D. Használj CHAR-t vezérlő karakter beadására
Ez a példa CHAR(13) külön sorokban érkező információkat sys.databases szolgál, amikor a lekérdezés szövegként adja vissza az eredményeket.
SELECT name, 'was created on ',
create_date,
CHAR(13),
name,
'is currently ',
state_desc
FROM sys.databases;
GO
Itt van az eredmények összessége.
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. Használd a CHAR-t az egybájtos karakterek visszaadására
Ez a példa az egész és hex értékeket használja az ASCII érvényes tartományban. A CHAR függvény képes kiadni az egybájtos japán karaktert.
SELECT CHAR(188) AS single_byte_representing_complete_character,
CHAR(0xBC) AS single_byte_representing_complete_character;
GO
Itt van az eredmények összessége.
single_byte_representing_complete_character single_byte_representing_complete_character
------------------------------------------- -------------------------------------------
シ シ
F. Használj CHAR-t többbájtos karakterek visszaküldésére
Ez a példa egész és hex értékeket használ az érvényes tartományban az Extended ASCII esetében. Azonban a CHAR függvény visszatér NULL , mert a paraméter csak egy többbájtos karakter első bájtját képviseli. Egy karakter(2) kétbájtos karakter nem lehet részben ábralni vagy osztani valamilyen átalakítási művelet nélkül. A kétbájtos karakter egyes bájtjai általában nem képviselik érvényes karakter(1) értékeket.
SELECT CHAR(129) AS first_byte_of_double_byte_character,
CHAR(0x81) AS first_byte_of_double_byte_character;
GO
Itt van az eredmények összessége.
first_byte_of_double_byte_character first_byte_of_double_byte_character
----------------------------------- -----------------------------------
NULL NULL
G. Használj CONVERT gombot a CHAR helyett, hogy visszaadj többbájtos karaktereket
Ez a példa a bináris értéket kódolt többbájtos karakterként fogadja el, amely összhangban van az aktuális adatbázis alapértelmezett kódlapjával, és ellenőrzés alá vonul. A karakterátalakítás szélesebb körben támogatott, és alternatívája lehet az alacsonyabb szintű kódolás helyett.
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];
Itt van az eredmények összessége.
eighth-note context-dependent-convert context-dependent-cast
----------- ------------------------- ----------------------
♪ ♪ ♪
H. Használj NCHAR-t a CHAR helyett, hogy megkeresd az UTF-8 karaktereket
Ez a példa kiemeli azt a különbséget, amelyet a Unicode szabvány megkülönböztet egy karakter kódpontja és a kódegység-sorozat között egy adott kódolási forma alatt. A klasszikus karakterkészlethez hozzárendelt bináris kód az egyetlen numerikus azonosítója.
Ezzel szemben az UTF-8 bájtsorozat, amely egy karakterhez kapcsolódik, algoritmikus kódolása a hozzá rendelt numerikus azonosítónak: a kódpontnak. Az UTF-8 karakter és az UTF-16 nchar különböző kódolási formák , amelyek 8 és 16 bites kódegységeket használnak, ugyanazzal a karakterhalmazsal: a Unicode Karakteradatbázissal.
;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;
Itt van az eredmények összessége. Ezeket az eredményeket kiegészítő _SC karaktertámogatással összesítve generálják.
| Zenei hang | Zenei hang (UTF-8) | Code Point | UTF-16LE bájtok | UTF-8 bájtok |
|---|---|---|---|---|
| ♫ | ♫ | 9835 | 0x6B26 | 0xE299AB |
| 🎵 | 🎵 | 127925 | 0x3CD8B5DF | 0xF09F8EB5 |