CHAR() 函數 (SQL CHAR() Function)
CHAR() 函數用於將 ASCII 碼 (數值) 轉換為對應的字元。這是 ASCII() 函數的反向操作。
CHAR() 語法 (Syntax)
CHAR(ascii_code)
ascii_code:ASCII 碼數值 (0-127)
CHAR() 用法範例 (Example)
範例 1:基本轉換
SELECT CHAR(65) AS UpperA,
CHAR(97) AS LowerA,
CHAR(90) AS UpperZ;
結果:
| UpperA | LowerA | UpperZ |
|---|---|---|
| A | a | Z |
範例 2:數字和符號
SELECT CHAR(48) AS Zero,
CHAR(57) AS Nine,
CHAR(64) AS AtSign,
CHAR(32) AS Space;
結果:
| Zero | Nine | AtSign | Space |
|---|---|---|---|
| 0 | 9 | @ | (空格) |
範例 3:特殊字元
SELECT CHAR(10) AS LineFeed, -- 換行
CHAR(13) AS CarriageReturn, -- 回車
CHAR(9) AS Tab; -- Tab
常見 ASCII 碼對照
| ASCII 碼 | 字元 | 說明 |
|---|---|---|
| 48-57 | 0-9 | 數字 |
| 65-90 | A-Z | 大寫字母 |
| 97-122 | a-z | 小寫字母 |
| 32 | (空格) | 空白字元 |
| 9 | (Tab) | 水平 Tab |
| 10 | (LF) | 換行 |
| 13 | (CR) | 回車 |
實際應用範例
1. 在字串中插入換行
-- MySQL
SELECT CONCAT('Line 1', CHAR(10), 'Line 2') AS MultiLine;
-- SQL Server
SELECT 'Line 1' + CHAR(10) + 'Line 2' AS MultiLine;
2. 產生字母序列
-- 產生 A-Z 的字母
-- MySQL
SELECT CHAR(64 + @rownum := @rownum + 1) AS Letter
FROM (SELECT @rownum := 0) r,
(SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 /* ... 26個 */) t
LIMIT 26;
3. 大小寫轉換 (透過 ASCII 運算)
-- 將小寫轉大寫 (a=97, A=65, 差 32)
SELECT CHAR(ASCII('a') - 32) AS UpperA; -- 結果:A
-- 將大寫轉小寫
SELECT CHAR(ASCII('A') + 32) AS LowerA; -- 結果:a
4. 移除特殊字元
-- 移除 Tab 字元
SELECT REPLACE(content, CHAR(9), '') AS CleanContent
FROM articles;
-- 移除換行字元
SELECT REPLACE(REPLACE(content, CHAR(10), ''), CHAR(13), '') AS SingleLine
FROM articles;
SQL Server 的 CHAR() 與 NCHAR()
SQL Server 提供兩個相關函數:
| 函數 | 說明 |
|---|---|
CHAR(n) | 返回 ASCII 字元 (0-255) |
NCHAR(n) | 返回 Unicode 字元 |
-- SQL Server
SELECT CHAR(65) AS Ascii_A,
NCHAR(65) AS Unicode_A,
NCHAR(20013) AS Chinese_Middle; -- 中
資料庫支援
| 資料庫 | 函數名稱 |
|---|---|
| MySQL | CHAR() |
| SQL Server | CHAR(), NCHAR() |
| PostgreSQL | CHR() |
| Oracle | CHR() |
⚠️ 注意: PostgreSQL 和 Oracle 使用
CHR()而非CHAR()。
相關主題
- ASCII() - 字元轉 ASCII 碼
- CONCAT() - 字串連接
- ASCII 碼對照表 - 完整 ASCII 碼參考