Oracle迁移到Pgsql避坑指南

内容分享3周前发布
0 0 0

1. substr()函数差异

  • 在oracle中,substr(x,0,3)与substr(x,1,3)的意思一样,都是截取第一个到第三个元素

select substr( ABCDEFG ,0,3) as sub3_1
      ,substr( ABCDEFG ,1,3) as sub3_2
  from dual 

Oracle迁移到Pgsql避坑指南

  • 在postgresq中,substr(x,0,3)截取前两位元素,substr(x,1,3)截取前三位元素

select substr( ABCDEFG ,0,3) as sub3_1
      ,substr( ABCDEFG ,1,3) as sub3_2

Oracle迁移到Pgsql避坑指南

  • 综上,在oracle的substr函数中,第二位的0和1代表的意思一样;在postgresql的substr函数中,第二位的0和1代表的意思不同,在做oracle数据库sql迁移到postgresql数据库sql的时候切记把第二位的0改为1

2. regexp_instr()函数差异

  • 在oracle中,regexp_instr()函数同instr功能类似,返回正则表达式所匹配到字符所在“下标”
  • 在postgresq中,postgresq15及以上版本才支持regexp_instr()函数,15以下版本需要结合substring()与position()函数才能实现类似功能,示例如下

select  TestStr123  as str 
          ,position(substring( TestStr123  from  [0-9] ) in  TestStr123 )

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...