LEFT() / RIGHT() 函數 (SQL LEFT() / RIGHT() Function)

LEFT() 函數用來取得字串左邊指定數量的字元,RIGHT() 函數則是取得右邊的字元。

語法

LEFT(string, number_of_chars)
RIGHT(string, number_of_chars)
  • string:原始字串或欄位名稱
  • number_of_chars:要擷取的字元數

基本範例

SELECT LEFT('Hello World', 5);
-- 結果: Hello

SELECT RIGHT('Hello World', 5);
-- 結果: World

SELECT LEFT('ABC123', 3);
-- 結果: ABC

SELECT RIGHT('ABC123', 3);
-- 結果: 123

從資料表欄位擷取

假設有一個客戶資料表 customers:

customer_idphone
102-12345678
203-87654321

取得電話區碼和號碼:

SELECT 
    customer_id,
    LEFT(phone, 2) AS area_code,
    RIGHT(phone, 8) AS number
FROM customers;

結果:

customer_idarea_codenumber
10212345678
20387654321

各資料庫支援

資料庫LEFT()RIGHT()替代方案
MySQL-
SQL Server-
PostgreSQL-
OracleSUBSTR()

Oracle 替代方案

Oracle 沒有 LEFT() 和 RIGHT() 函數,需要使用 SUBSTR():

-- LEFT(string, n) 的替代
SELECT SUBSTR('Hello World', 1, 5) FROM dual;
-- 結果: Hello

-- RIGHT(string, n) 的替代
SELECT SUBSTR('Hello World', -5) FROM dual;
-- 結果: World

搭配其他函數使用

取得 email 中 @ 之前的使用者名稱:

-- MySQL / SQL Server
SELECT LEFT(email, CHARINDEX('@', email) - 1) AS username FROM users;

-- MySQL 使用 LOCATE
SELECT LEFT(email, LOCATE('@', email) - 1) AS username FROM users;

取得檔案副檔名:

-- 假設檔名格式為 filename.ext
SELECT RIGHT(filename, 3) AS extension FROM files;