UCASE() / UPPER() 函數 (SQL UCASE/UPPER Function)
UCASE() 和 UPPER() 函數用於將字串中的英文字母轉換為大寫。兩者功能相同,只是名稱不同。
各資料庫的函數名稱
| 資料庫 | 函數名稱 |
|---|---|
| MySQL | UCASE() 或 UPPER() |
| SQL Server | UPPER() |
| PostgreSQL | UPPER() |
| Oracle | UPPER() |
| SQLite | UPPER() |
語法 (Syntax)
-- MySQL
SELECT UCASE(column_name) FROM table_name;
SELECT UPPER(column_name) FROM table_name;
-- 其他資料庫
SELECT UPPER(column_name) FROM table_name;
用法範例 (Example)
customers 資料表:
| C_Id | Name |
|---|---|
| 1 | Smith |
| 2 | Brad |
範例 1:轉換為大寫
SELECT Name, UPPER(Name) AS UpperName
FROM customers;
結果:
| Name | UpperName |
|---|---|
| Smith | SMITH |
| Brad | BRAD |
範例 2:不區分大小寫的搜尋
-- 將輸入和欄位都轉為大寫進行比對
SELECT * FROM customers
WHERE UPPER(Name) = UPPER('smith');
範例 3:格式化輸出
-- 產品代碼統一大寫
SELECT UPPER(ProductCode) AS Code, ProductName
FROM products;
實際應用範例
1. 資料標準化
-- 統一將 Email 轉為小寫,姓氏轉為大寫
UPDATE customers
SET Email = LOWER(Email),
LastName = UPPER(LastName);
2. 搭配 CONCAT() 格式化
-- 產生標準格式的名稱:姓氏大寫、名字首字大寫
SELECT CONCAT(
UPPER(LastName), ', ',
UPPER(LEFT(FirstName, 1)), LOWER(SUBSTRING(FirstName, 2))
) AS FormattedName
FROM employees;
-- 結果範例:SMITH, John
3. 搜尋條件
-- 不區分大小寫搜尋
SELECT * FROM products
WHERE UPPER(Category) IN ('ELECTRONICS', 'COMPUTERS');
注意事項
僅影響英文字母:
UPPER()只會轉換英文字母 (a-z → A-Z),數字、符號和非英文字元不受影響。不會修改原始資料:函數只是返回轉換後的結果,不會改變資料表中的實際資料。要永久修改需使用
UPDATE。效能考量:在
WHERE子句中使用函數可能會影響索引效能。
-- 較慢:無法使用索引
SELECT * FROM customers WHERE UPPER(Name) = 'SMITH';
-- 較快:直接比對 (如果資料庫使用不區分大小寫的排序規則)
SELECT * FROM customers WHERE Name = 'Smith';
相關主題
- LCASE() / LOWER() - 轉小寫
- CONCAT() - 字串連接
- SUBSTRING() - 擷取子字串