REVERSE() 函數 (SQL REVERSE() Function)
REVERSE() 函數用來反轉字串,將字元順序顛倒過來。
語法
REVERSE(string)
基本範例
SELECT REVERSE('Hello');
-- 結果: olleH
SELECT REVERSE('12345');
-- 結果: 54321
SELECT REVERSE('ABCDE');
-- 結果: EDCBA
各資料庫支援
| 資料庫 | 支援 |
|---|---|
| MySQL | ✓ |
| SQL Server | ✓ |
| PostgreSQL | ✓ |
| Oracle | ✓ |
實際應用範例
取得檔案副檔名
搭配 CHARINDEX 從後面找到第一個點號的位置:
-- SQL Server
SELECT
filename,
REVERSE(LEFT(REVERSE(filename), CHARINDEX('.', REVERSE(filename)) - 1)) AS extension
FROM files;
假設 filename 為 document.pdf:
- REVERSE('document.pdf') = 'fdp.tnemucod'
- CHARINDEX('.', 'fdp.tnemucod') = 4
- LEFT('fdp.tnemucod', 3) = 'fdp'
- REVERSE('fdp') = 'pdf'
取得路徑中的檔案名稱
-- SQL Server:路徑使用反斜線
SELECT
file_path,
REVERSE(LEFT(REVERSE(file_path), CHARINDEX('\', REVERSE(file_path)) - 1)) AS filename
FROM files;
-- C:\Users\Documents\file.txt → file.txt
檢查回文(Palindrome)
-- 判斷字串是否為回文
SELECT
word,
CASE
WHEN word = REVERSE(word) THEN 'Yes'
ELSE 'No'
END AS is_palindrome
FROM words;
範例資料:
| word | is_palindrome |
|---|---|
| level | Yes |
| hello | No |
| radar | Yes |
產生反向排序的序號
-- 將數字反轉後轉回數字排序
SELECT * FROM products
ORDER BY CAST(REVERSE(CAST(id AS VARCHAR(10))) AS INT);