字符串处理函数—TRIM函数
由于GaussDB(DWS)中有三种兼容模式,即ORACLE兼容模式(默认模式), TD兼容模式, MySQL兼容模式,且由于兼容模式不同,许多同名函数会有不同的行为表现,用户在不了解清楚的情况下,很容易使用出错。TRIM函数是很常见的字符串处理函数,大家通常都会使用TRIM函数来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种。但TRIM函数不仅仅只能去除空格,实际上它具有删除“任意指定字符”的功能。本文将详细介绍GaussDB(DWS)中TRIM字符串处理函数的相关知识。
1. TRIM函数介绍
语法
首先,我们先根据TRIM函数的完整语法描述来了解下TRIM函数的功能。
TRIM([ { { LEADING | TRAILING | BOTH } [ character ] | character } FROM ] string)
TRIM函数返回值类型为TEXT类型。
参数
参数名 | 类型 | 说明 |
character | char | 需要删除的子串或者单个字符,缺省为空格 |
string | char | 原字符串 |
我们可以从上面的语法中看到,TRIM函数可以从输入的字符串string的开头、结尾或者两边删除指定的子串或字符characters(缺省为空格)。其中BOTH参数表示同时去除字符串前后所指定的内容;TRAILING参数可以完成字符串尾部空格的删除功能;LEADING参数正好相反,完成字符串头部空格的删除功能(缺省情况为BOTH)。那在不同的兼容模式下,TRIM函数的行为是否有变化呢?下面将从不同的兼容模式中,举例展示TRIM函数。
2. Oracle兼容模式与TD兼容模式下的TRIM函数
首先是Oracle兼容模式和TD兼容模式,我们可以先看下具体的示例,如下:
oracle_db=# SELECT trim(' 121123dsq12112 ');
btrim
----------------
121123dsq12112
(1 row)
oracle_db=# SELECT trim('12' from '121123dsq12112');
btrim
-------
3dsq
(1 row)
oracle_db=# SELECT trim(leading '12' from '121123dsq12112');
ltrim
-----------
3dsq12112
(1 row)
oracle_db=# SELECT trim(both '12' from '121123dsq12112');
btrim
-------
3dsq
(1 row)
oracle_db=# SELECT trim(trailing '12' from '121123dsq12112');
rtrim
-----------
121123dsq
(1 row)
td_db=# SELECT trim(' 121123dsq12112 ');
btrim
----------------
121123dsq12112
(1 row)
td_db=# SELECT trim('12' from '121123dsq12112');
btrim
-------
3dsq
(1 row)
td_db=# SELECT trim(leading '12' from '121123dsq12112');
ltrim
-----------
3dsq12112
(1 row)
td_db=# SELECT trim(both '12' from '121123dsq12112');
btrim
-------
3dsq
(1 row)
td_db=# SELECT trim(trailing '12' from '121123dsq12112');
rtrim
-----------
121123dsq
(1 row)
从上面的例子中我们可以看到,在ORACLE和TD兼容模式中,TRIM函数删除的是子串中的包含的字符。
3. MySQL兼容模式下的TRIM函数
那在MySQL兼容模式下是否也是同样的行为呢?是不同的,这是因为MySQL兼容模式下兼容的是MySQL中的TRIM函数,MySQL中的TRIM函数的行为是将原字符串中的characters整个子串删除,其示例如下:
mysql_db=# SELECT trim(' 121123dsq12112 ');
btrim
----------------
121123dsq12112
(1 row)
mysql_db=# SELECT trim('12' from '121123dsq12112');
btrim
------------
1123dsq121
(1 row)
mysql_db=# SELECT trim(leading '12' from '121123dsq12112');
ltrim
--------------
1123dsq12112
(1 row)
mysql_db=# SELECT trim(both '12' from '121123dsq12112');
btrim
------------
1123dsq121
(1 row)
mysql_db=# SELECT trim(trailing '12' from '121123dsq12112');
rtrim
--------------
121123dsq121
(1 row)
4. 结语
我们现在已经对TRIM函数有了详细的了解,那么作为TRIM的派生函数BTRIM函数和LTRIM函数,RTRIM函数,这三个函数原理也是一样的。
函数名 | 语法 | 函数说明 |
BTRIM | btrim(string text [, characters text]) | 从输入的字符串string的两边删除指定的子串或字符characters(缺省为空格) |
LTRIM | ltrim(string text [, characters text]) | 从输入的字符串string的开头删除指定的子串或字符characters(缺省为空格) |
RTRIM | rtrim(string text [, characters text]) | 从输入的字符串string的结尾删除指定的子串或字符characters(缺省为空格) |
大家有兴趣可以自己去尝试了解并使用TRIM函数以及TRIM函数的三个派生函数。
想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~
- 点赞
- 收藏
- 关注作者
评论(0)