UCASE() / UPPER() 函數 (SQL UCASE/UPPER Function)

UCASE()UPPER() 函數用於將字串中的英文字母轉換為大寫。兩者功能相同,只是名稱不同。

各資料庫的函數名稱

資料庫函數名稱
MySQLUCASE()UPPER()
SQL ServerUPPER()
PostgreSQLUPPER()
OracleUPPER()
SQLiteUPPER()

語法 (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_IdName
1Smith
2Brad

範例 1:轉換為大寫

SELECT Name, UPPER(Name) AS UpperName
FROM customers;

結果:

NameUpperName
SmithSMITH
BradBRAD

範例 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');

注意事項

  1. 僅影響英文字母UPPER() 只會轉換英文字母 (a-z → A-Z),數字、符號和非英文字元不受影響。

  2. 不會修改原始資料:函數只是返回轉換後的結果,不會改變資料表中的實際資料。要永久修改需使用 UPDATE

  3. 效能考量:在 WHERE 子句中使用函數可能會影響索引效能。

-- 較慢:無法使用索引
SELECT * FROM customers WHERE UPPER(Name) = 'SMITH';

-- 較快:直接比對 (如果資料庫使用不區分大小寫的排序規則)
SELECT * FROM customers WHERE Name = 'Smith';

相關主題