前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL和Oracle字符串截取函数用法总结(比较)

MySQL和Oracle字符串截取函数用法总结(比较)

作者头像
IT技术分享社区
发布2022-10-31 16:34:26
8350
发布2022-10-31 16:34:26
举报
文章被收录于专栏:IT技术分享社区IT技术分享社区

点击上方'伦少的博客'关注与您一起成长

前言

本文总结MySQL和Oracle的字符串截取函数的用法

工作中MySQL和Oracle都用,有时会碰到两种数据库SQL用法的不同,就会上网查一下,但是时间久了,就忘记了,好记性不如烂笔头,所以写个笔记备忘一下~

1、MySql

函数:SUBSTRING 或 SUBSTR

1.1 语法

位置

代码语言:javascript
复制
SUBSTRING(string,position);
SUBSTRING(string FROM position);

位置和长度

代码语言:javascript
复制
SUBSTRING(string,position,length);
SUBSTRING(string FROM position FOR length);

1.2 下标

  • | H | e | l | l | 0 | | W | o | r | l | d
  • | :-: | :-: | :-: | :-: 正数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 负数 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1

1.3 示例详解

1.3.1 位置

position>0,从position(包含)开始

代码语言:javascript
复制
SELECT SUBSTRING('Hello World',1);
SELECT SUBSTRING('Hello World' FROM 7);
代码语言:javascript
复制
Hello World
World

position=0返回空

代码语言:javascript
复制
SELECT SUBSTRING('Hello World',0);

position<0,与position为正时是一样的,下面的sql的效果是相同的

代码语言:javascript
复制
SELECT SUBSTRING('Hello World',-11);
SELECT SUBSTRING('Hello World' FROM -5);

当position的绝对值>LENGTH(string)时,返回空,和position=0时一样

代码语言:javascript
复制
SELECT SUBSTRING('Hello World',12);
SELECT SUBSTRING('Hello World',-12);
1.3.2 位置和长度

position的用法和上面讲的是一样的,下面仅总结length length>0时返回length个字符数,当length>string的可截取的长度时,只返回可截取的长度

代码语言:javascript
复制
SELECT SUBSTRING('Hello World',1,5);
SELECT SUBSTRING('Hello World',6,20);
代码语言:javascript
复制
Hello
World

length<=0时返回空

代码语言:javascript
复制
SELECT SUBSTRING('Hello World',1,0);
SELECT SUBSTRING('Hello World',1,-20);

下面等价

代码语言:javascript
复制
SELECT SUBSTRING('Hello World',6,20);
SELECT SUBSTRING('Hello World' FROM 6 FOR 20);

可通过LENGTH查看字符串的长度验证(当length>string的可截取的长度时)

代码语言:javascript
复制
SELECT LENGTH(SUBSTRING('Hello World' FROM 6 FOR 20));
代码语言:javascript
复制
6

2、Oracle

函数:SUBSTR

和MySql不同的是没有SUBSTRING

2.1 语法

位置

代码语言:javascript
复制
SUBSTR(string,position);
SUBSTR(string FROM position);

位置和长度

代码语言:javascript
复制
SUBSTR(string,position,length);
SUBSTR(string FROM position FOR length);

2.2 下标

  • | H | e | l | l | 0 | | W | o | r | l | d
  • | :-: | :-: | :-: | :-: 正数 | 0或1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 负数 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1

2.3 示例详解

2.3.1 位置

与MySQL一样,position>0和position<0时是一样的效果,参照上面的下标对应即可,不同的是,position=0和position=1的效果是一样的。 下面三个sql效果一样

代码语言:javascript
复制
SELECT SUBSTR('Hello World',0) FROM DUAL;
SELECT SUBSTR('Hello World',1) FROM DUAL;
SELECT SUBSTR('Hello World',-11) FROM DUAL;
代码语言:javascript
复制
Hello World

当position的绝对值>LENGTH(string)时,返回[NULL]

代码语言:javascript
复制
SELECT SUBSTR('Hello World',12) FROM DUAL
SELECT SUBSTR('Hello World',-12) FROM DUAL;
代码语言:javascript
复制
[NULL]
2.3.2 位置和长度

position的用法和上面讲的是一样的,下面仅总结length length>0时返回length个字符数,当length>string的可截取的长度时,只返回可截取的长度,这点和MySQL相同

代码语言:javascript
复制
SELECT SUBSTR('Hello World',1,5) FROM DUAL;
SELECT SUBSTR('Hello World',6,20) FROM DUAL;
代码语言:javascript
复制
Hello
World

length<=0时返回[NULL],这点和MySQL不同

代码语言:javascript
复制
SELECT SUBSTR('Hello World',1,0) FROM DUAL;
SELECT SUBSTR('Hello World',6,-20) FROM DUAL;
代码语言:javascript
复制
 [NULL]

3 比较总结

最后比较一下MySQL和Oracle的不同

  • 1、 MySQL函数为SUBSTRING 或 SUBSTR,Oracle只有SUBSTR
  • 2、 position=0时MySQL返回空,而Oracle和position=1时一样
  • 3、 当position的绝对值>LENGTH(string)时和length<=0时,MySQL返回空,而Oracle返回[NULL]

关注我

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明互联网技术分享社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1、MySql
    • 1.1 语法
      • 1.2 下标
        • 1.3 示例详解
          • 1.3.1 位置
          • 1.3.2 位置和长度
      • 2、Oracle
        • 2.1 语法
          • 2.2 下标
            • 2.3 示例详解
              • 2.3.1 位置
              • 2.3.2 位置和长度
          • 3 比较总结
            • 关注我
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档