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;

結果:

UpperALowerAUpperZ
AaZ

範例 2:數字和符號

SELECT CHAR(48) AS Zero,
       CHAR(57) AS Nine,
       CHAR(64) AS AtSign,
       CHAR(32) AS Space;

結果:

ZeroNineAtSignSpace
09@(空格)

範例 3:特殊字元

SELECT CHAR(10) AS LineFeed,   -- 換行
       CHAR(13) AS CarriageReturn,  -- 回車
       CHAR(9) AS Tab;         -- Tab

常見 ASCII 碼對照

ASCII 碼字元說明
48-570-9數字
65-90A-Z大寫字母
97-122a-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;  -- 中

資料庫支援

資料庫函數名稱
MySQLCHAR()
SQL ServerCHAR(), NCHAR()
PostgreSQLCHR()
OracleCHR()

⚠️ 注意: PostgreSQL 和 Oracle 使用 CHR() 而非 CHAR()

相關主題