摘要:下面就来给大家介绍这三个函数在字符截取时的一些用法与区别。

本文分享自华为云社区《(DWS)中的字符截取三胞胎【这次高斯不是数学家】-云社区-华为云》,作者:我站在北方的天空下 。

在(DWS)中关于字符截取功能的支持有个函数三胞胎,它们分别是()、()、(),很多人大概只知道它们可以操作字符串截取,再深入一点可能就不是很清楚了,有的是参数截取长度、有的参数是结束位置、有的参数可以是负数、有的不能接受负数参数·····

下面就来给大家介绍这三个函数在字符截取时的一些用法与区别吧。

概述

,,均为字符串截取函数,都可带两个或三个参数,用于提取字符串中指定位置开始的指定长度的字符。函数定义如下:

函数形式:
    substrb(string, from [, count])
    substr(string, from [, count])
    substring(string, from [, count])
参数描述:
	从参数string中抽取子字符串,from表示抽取的起始位置,count表示抽取的子字符串长度。
返回值类型:
	text

差异1. 截取单位

按字节截取,/按字符截取。以utf8编码为例,1个汉字占3个字节,当使用截取长度3的子串时,只能截取到一个字符,而/可以截取到三个字符。

postgres=# select substrb('hwgs华为公司',3,5),substr('hwgs华为公司',3,5),substring('hwgs华为公司',3,5);
 substrb |  substr  | substring
---------+----------+-----------
 gs华    | gs华为公 | gs华为公
(1 row)

2. 截取规则

(DWS)目前支持三种兼容模式:ORA、TD和MySQL,分别对友商的函数行为进行兼容,提升用户迁移体验。在不同兼容模式下,函数差异表现为:

(, s[, n]):各兼容模式行为一致

mysql截取字符串_mysql字符串截取函数性能_mysql字符串截取

postgres=# select substrb('hwgs华为公司',5,3),substrb('hwgs华为公司',8,3);
 substrb | substrb
---------+---------
 华      | 为
(1 row)
postgres=# select substrb('hwgs华为公司',-6,3),substrb('hwgs华为公司',-3,3);
 substrb | substrb
---------+---------
 公      | 司
(1 row)
postgres=# select substrb('hwgs华为公司',5,0),substrb('hwgs华为公司',8,-1);
 substrb | substrb
---------+---------
         |
(1 row)

(, s[, n]):s=0时存在兼容行为差异

mysql字符串截取函数性能_mysql截取字符串_mysql字符串截取

postgres=# select substr('hwgs华为公司',5,3),substr('hwgs华为公司',8,3);
 substr | substr
--------+--------
 华为公 | 司
(1 row)
postgres=# select substr('hwgs华为公司',0,3),substr('hwgs华为公司',0,3);
 substr | substr
--------+--------
 hwg    | hwg
(1 row)
mysql_db=# select substr('hwgs华为公司',0,3),substr('hwgs华为公司',0,3);
 substr | substr
--------+--------
        |
(1 row)

(, s[, n]):s

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666

声明:1、本内容转载于网络,版权归原作者所有!2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!