W SQL Server, T-SQL CHAR()
funkcja konwertuje int Kod ASCII na wartość znakową. Innymi słowy, przekazujesz liczbę całkowitą, a funkcja interpretuje ją jako wartość kodu dla znaku ciągu i zwraca odpowiedni znak ciągu.
Składnia
Składnia wygląda tak:
CHAR ( integer_expression )
Gdzie integer_expression
jest liczbą całkowitą od 0 do 255.
Jeśli określisz liczbę całkowitą spoza tego zakresu, wynikiem będzie NULL
. To samo dotyczy sytuacji, gdy podasz liczbę całkowitą, która wyraża tylko pierwszy bajt znaku dwubajtowego.
Przykład 1 – Podstawowe użycie
Oto przykład demonstrujący podstawowe użycie:
SELECT CHAR(67) AS 'Result';
Wynik:
+----------+ | Result | |----------| | C | +----------+
Więc jeśli zmienimy liczbę całkowitą, otrzymamy inny znak:
SELECT CHAR(255) AS 'Result';
Wynik:
+----------+ | Result | |----------| | ÿ | +----------+
Przykład 2 – Wiele liczb całkowitych
Ta funkcja nie obsługuje wielu liczb całkowitych jako argumentów. Jeśli podasz wiele liczb całkowitych, otrzymasz błąd.
Oto przykład:
SELECT CHAR(67, 255) AS 'Result';
Wynik:
The char function requires 1 argument(s).
Zauważ, że jest to w przeciwieństwie do CHAR()
w MySQL funkcja (która pozwala na podanie wielu liczb całkowitych).
Przykład 3 – liczby całkowite spoza zakresu
Ta funkcja nie obsługuje również liczb całkowitych spoza zakresu od 1 do 255. Jeśli twój argument jest poza tym zakresem, wynikiem jest NULL
.
Oto przykład:
SELECT CHAR(256) AS 'Result';
Wynik:
+----------+ | Result | |----------| | NULL | +----------+
Jest to znowu w przeciwieństwie do CHAR()
w MySQL funkcja, która akceptuje liczby całkowite większe niż 255 (w takim przypadku są one automatycznie konwertowane na wiele bajtów wyniku).
Przykład 4 – Wstawianie znaków kontrolnych
Oto przykład użycia CHAR(13)
aby wydrukować kolejne znaki w nowej linii:
SELECT 'Homer' + CHAR(13) + '[email protected]' AS 'Name/Email';
Wynik:
+--------------+ | Name/Email | |--------------| | Homer [email protected] | +--------------+
Oto jak to wygląda, gdy usuniemy CHAR(13)
:
SELECT 'Homer' AS 'Name', '[email protected]' AS 'Email';
Wynik:
+--------+-----------------------+ | Name | Email | |--------+-----------------------| | Homer | [email protected] | +--------+-----------------------+