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

  1. REVERSE('document.pdf') = 'fdp.tnemucod'
  2. CHARINDEX('.', 'fdp.tnemucod') = 4
  3. LEFT('fdp.tnemucod', 3) = 'fdp'
  4. 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;

範例資料:

wordis_palindrome
levelYes
helloNo
radarYes

產生反向排序的序號

-- 將數字反轉後轉回數字排序
SELECT * FROM products
ORDER BY CAST(REVERSE(CAST(id AS VARCHAR(10))) AS INT);