移除字串前後空白(或特定字元)。
MSSQL2017前版本提供RTRIM及LTRIM兩個函數,LTRIM函數將移除字串前面(或稱左側)空白字元,RTRIM則將移除字串後方(或稱右側)空白字元,MSSQL2017增加TRIM函數,除可供剔除前後空白字元外,尚可指定特定字元。
ORACLE提供與MSSQL三個基本用法相同之同名函數,但功能上更為彈性。
ORACLE: 提供TRIM、RTRIM及LTRIM函數。語法如下:
語法
|
說明
|
TRIM(
[[BOTH|LEADING|TRAILING] trim_char FROM]
str
)
|
移除字串前後空白(或特定字元)
TRIM([[位置] [移除字元] FROM] 字串)
|
RTRIM(str [,trim_chars])
|
移除字串字尾空白(或表列字元)
|
LTRIM(str [,trim_chars])
|
移除字串字首空白(或表列字元)
|
範例:
--------- ----- ----- -----+ ----- ----- ------+ -----
結果: 123 123 1230 123 | 35 NULL 5303 | 3030
|
TRIM函數之trim_char 參數限制為單一字元,如違反則出現「ORA-30001 - trim set should have only one character.」錯誤。
MSSQL: MSSQL2017開始提供TRIM函數,除可供剔除前後空白字元外,尚可指定特定字元;另外先前版本提供RTRIM及LTRIM兩個函數。語法如下:
語法
|
說明
|
TRIM([trim_chars FROM] str)
(2017)
|
移除字串前後空白(或特定字元)
|
RTRIM(str)
|
移除字串的字尾空白
|
LTRIM(str)
|
移除字串的字首空白
|
範例:
--------- ----- ----- -----+ ----- +------
結果: 123 5 123 NULL | 5303 | 3030
|
指令比較:
移除字串(str)前後空白(或特定字元)。比較如下:
ORACLE
|
MSSQL
| |
語法
|
TRIM(
[[BOTH|LEADING|TRAILING] trim_char FROM]
str
)
注意: trim_char限定為單一字元。
|
TRIM([trim_chars FROM] str)
(2017)
注意: 1.無法指定移除位置。
2.支援多字元定義。
|
剔除前後空白字元
|
ü
|
ü
|
剔除前後指定字元
|
ü (限定單一字元)
|
ü(表列字元)
|
指定位置(前或後)
|
ü
|
û (不可指定)
|
移除右側空白
(或指定字元)
|
RTRIM(str [,trim_chars])
|
RTRIM(str)
|
指定移除字元
(表列字元)
|
ü
|
û (不支援,僅可移除空白)
|
移除左側空白
(或指定字元)
|
LTRIM(str [,trim_chars])
|
LTRIM(str)
|
指定移除字元
(表列字元)
|
ü
|
û (不支援,僅可移除空白)
|
注意:
(1) TRIM函數: 兩種資料庫均有其限制,使用上需注意。
(2) 支援多移除字元定義者,使用上需特別小心。
範例:
ORACLE
|
MSSQL
| |
移除前後空白
|
SELECT TRIM(' 123 ')
FROM DUAL
---------
結果: 123
|
SELECT TRIM(' 123 ')
, LTRIM(RTRIM(' 123 '))
--------- -------
結果: 123 123
|
移除前置0
|
SELECT
TRIM(LEADING '0' FROM '01230')
, LTRIM('01230', '0')
FROM DUAL
--------- -------
結果: 123 123
|
SELECT SUBSTRING(VAL
, PATINDEX('%[^0]%', VAL)
, 8000)
FROM (VALUES('0123')) A (VAL)
---------
結果: 123
|
移除前置0,由於MSSQL2017所提供TRIM函數並無法指定移除位置,因此仍採用先前文章所提之方法。
沒有留言:
張貼留言