字符串处理函数—TRIM函数

举报
小仲 发表于 2022/01/17 09:50:07 2022/01/17
【摘要】 本文详细介绍了GaussDB(DWS)中的TRIM函数的功能,并从三种不同的兼容性模式说明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)

从上面的例子中我们可以看到,在ORACLETD兼容模式中,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级数仓黑科技,后台还可获取众多学习资料哦~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。