
在資料庫開發與數據處理過程中,字串處理操作極為常見。SQL Server 與 Oracle 作為主流資料庫系統,其字串處理函數雖大致相似,但仍存在細節差異。本文將對 SQL Server 與 Oracle 中常用的字串處理技巧與函數進行詳解,幫助開發者快速上手,提高開發效率。
一、字串長度計算
1. SQL Server
SELECT LEN('Hello World'); -- 返回11,注意不計算尾部空格
2. Oracle
SELECT LENGTH('Hello World') FROM DUAL; -- 返回11,計算所有字符
二、字串拼接
1. SQL Server
SELECT 'Hello' + ' ' + 'World';
2. Oracle
SELECT 'Hello' || ' ' || 'World' FROM DUAL;
三、截取字串
1. SQL Server – SUBSTRING
SELECT SUBSTRING('Hello World', 1, 5); -- 返回Hello
2. Oracle – SUBSTR
SELECT SUBSTR('Hello World', 1, 5) FROM DUAL; -- 返回Hello
四、尋找字串位置
1. SQL Server – CHARINDEX
SELECT CHARINDEX('World', 'Hello World'); -- 返回7
2. Oracle – INSTR
SELECT INSTR('Hello World', 'World') FROM DUAL; -- 返回7
五、字串替換
1. SQL Server – REPLACE
SELECT REPLACE('Hello World', 'World', 'SQL'); -- 返回Hello SQL
2. Oracle – REPLACE
SELECT REPLACE('Hello World', 'World', 'SQL') FROM DUAL; -- 返回Hello SQL
六、去除空白
1. SQL Server
- 去除前後空白:
SELECT LTRIM(RTRIM(' Hello World ')); -- 返回Hello World
- 去除左側空白:
SELECT LTRIM(' Hello World ');
- 去除右側空白:
SELECT RTRIM(' Hello World ');
2. Oracle
- 去除前後空白:
SELECT TRIM(' Hello World ') FROM DUAL; -- 返回Hello World
- 去除左側空白:
SELECT LTRIM(' Hello World ') FROM DUAL;
- 去除右側空白:
SELECT RTRIM(' Hello World ') FROM DUAL;
七、大小寫轉換
1. SQL Server
- 轉換為小寫:
SELECT LOWER('Hello World'); -- 返回hello world
- 轉換為大寫:
SELECT UPPER('Hello World'); -- 返回HELLO WORLD
2. Oracle
- 轉換為小寫:
SELECT LOWER('Hello World') FROM DUAL;
- 轉換為大寫:
SELECT UPPER('Hello World') FROM DUAL;
八、重複字串
1. SQL Server – REPLICATE
SELECT REPLICATE('SQL', 3); -- 返回SQLSQLSQL
2. Oracle – RPAD
SELECT RPAD('SQL', 9, 'SQL') FROM DUAL; -- 返回SQLSQLSQL
九、特殊字元處理
1. SQL Server – QUOTENAME
SELECT QUOTENAME('ColumnName'); -- 返回[ColumnName]
2. Oracle – 雙引號標識符
SELECT "ColumnName" FROM TableName;
十、實務應用技巧
- 使用 CONCAT 函數(SQL Server 2012+)
SELECT CONCAT('Hello', ' ', 'World');
- 處理 NULL 值避免拼接失敗
- SQL Server:使用 ISNULL
SELECT 'Hello ' + ISNULL(NULL, 'World');
- Oracle:使用 NVL
SELECT 'Hello ' || NVL(NULL, 'World') FROM DUAL;
透過上述字串處理函數的熟練運用,不僅能提升 SQL 語句的編寫效率,還能在數據清理、轉換和報表製作等場景發揮強大作用。掌握 SQL Server 與 Oracle 字串處理的異同,將有助於應對不同資料庫平台的開發需求。