LCASE() / LOWER() 函數 (SQL LCASE/LOWER Function)
LCASE() 和 LOWER() 函數用於將字串中的英文字母轉換為小寫。兩者功能相同,只是名稱不同。
各資料庫的函數名稱
| 資料庫 | 函數名稱 |
|---|---|
| MySQL | LCASE() 或 LOWER() |
| SQL Server | LOWER() |
| PostgreSQL | LOWER() |
| Oracle | LOWER() |
| SQLite | LOWER() |
語法 (Syntax)
-- MySQL
SELECT LCASE(column_name) FROM table_name;
SELECT LOWER(column_name) FROM table_name;
-- 其他資料庫
SELECT LOWER(column_name) FROM table_name;
用法範例 (Example)
customers 資料表:
| C_Id | Name | |
|---|---|---|
| 1 | Smith | Smith@MAIL.com |
| 2 | BRAD | BRAD@MAIL.COM |
範例 1:轉換為小寫
SELECT Name, LOWER(Name) AS LowerName
FROM customers;
結果:
| Name | LowerName |
|---|---|
| Smith | smith |
| BRAD | brad |
範例 2:標準化 Email 格式
SELECT LOWER(Email) AS NormalizedEmail
FROM customers;
結果:
| NormalizedEmail |
|---|
| smith@mail.com |
| brad@mail.com |
實際應用範例
1. 資料清理與標準化
-- Email 統一轉為小寫
UPDATE customers
SET Email = LOWER(Email);
2. 不區分大小寫的搜尋
-- 搜尋使用者 (不區分大小寫)
SELECT * FROM users
WHERE LOWER(Username) = LOWER('Admin');
3. URL 友善化 (Slug 產生)
SELECT
Title,
LOWER(REPLACE(REPLACE(Title, ' ', '-'), '_', '-')) AS Slug
FROM posts;
-- 結果範例:'Hello World' → 'hello-world'
4. 搭配 UPPER() 進行格式化
-- 首字大寫、其餘小寫 (Proper Case)
SELECT CONCAT(
UPPER(LEFT(Name, 1)),
LOWER(SUBSTRING(Name, 2))
) AS ProperName
FROM customers;
-- 結果:'SMITH' → 'Smith'
5. 資料比對
-- 比對兩個表中的資料 (忽略大小寫差異)
SELECT a.*, b.*
FROM table_a a
JOIN table_b b ON LOWER(a.Email) = LOWER(b.Email);
注意事項
僅影響英文字母:
LOWER()只會轉換英文字母 (A-Z → a-z),數字、符號和非英文字元不受影響。不會修改原始資料:函數只是返回轉換後的結果,不會改變資料表中的實際資料。
效能考量:在
WHERE子句中使用函數可能會影響索引效能。
-- 如果經常需要不區分大小寫的搜尋,考慮:
-- 1. 建立計算欄位並建立索引
-- 2. 使用不區分大小寫的排序規則 (Collation)
相關主題
- UCASE() / UPPER() - 轉大寫
- CONCAT() - 字串連接
- SUBSTRING() - 擷取子字串
- REPLACE() - 取代字串