GBASE regexp_replace函数 与 db2 translate函数比较

db2 translate函数

以下内容参考自文档:
translate 函数
官方示例:

示例1:

fn:translate('Test literal','el','om')
-- RETURN RESULT: Tost mitoram

上述式子的意思为:
对于字符串:‘Test literal’,使用o 替代 e,使用 m替代 l

示例2:

fn:translate('Another test literal', 'Ater', 'Bfim')

函数返回在字符串文字“Another test literal”中进行以下替换后生成的字符串:A 替换为 B,t 替换为 f,e 替换为 i 并且 r 替换为 m。

当要替换的字符串 以及 用来替换的字符串不等长的时候,会自动忽略:

示例3:

SELECT TRANSLATE('123405060708  9ASGHKBJNJ4562113','*+',
' 0123456789') FROM SYSIBM.DUAL 

函数将用*替代空格,使用+替代0,对前面的字符串进行替换,而对于其他的数字(123456789)则也会使用空格进行替换,
因此替换后的结果为:

'    + + + + ** ASGHKBJNJ       '

示例4:

SELECT TRANSLATE('123456579SGIAIJNJKNJIN','*-+#$%^&*','3235') FROM SYSIBM.DUAL 

当用来替换的字符串长于要被替换的字符串,并且存在一对多的情况时,按照顺序进行匹配。
上式:
使用*替换数字3,使用-替换数字2,使用#替换数字5
结果:

'1-*4#6#79SGIAIJNJKNJIN'

一般TRANSLATE可以与TRIM()/LENGTH()函数联用,也可以隐藏一些信息,可以检查字符串是否含有某个字符(类似于正则的功能)

比如对手机号进行隐藏处置:

SELECT TARNSLATE('15923456789','*********','023456789') from SYSOBM.DUAL
RESULT RETURNED: '1**********'

结合TRIM()/LENGTH()函数使用:

SELECT LENGTH(TRIM(TRANSLATE(FIELD,'*',' 0123456789'))) FROM TABLE_NAME 

如果是数字的话,那么会被替换掉,如果存在空格的话,会变成*,用上述语句判断,该字段是否全部由数字组成,如果是的话,那么表达式应当为0

GBASE regexp_replace函数

在GBASE中能够实现类似功能的函数有regexp_replace
文章参考:
GBase 8a 模糊查询和正则函数regexp_replace、regexp_like
示例1:

select regexp_replace('First','st','AB');
-- RESULT RETURNED: 'FirAB' 

除了智齿字符串替换之外,regexp_replace还支持正则替换。
示例2:

select regexp_replace('我的电话13812345678。','13[6-9][0-9]{8}','***********');
-- RESULT RETURNED:我的电话***********。

上述式子也可以写作:

select regexp_replace('我的电话13812345678。','[0-9]','*');
-- RESULT RETURNED:我的电话***********。

因为’[0-9]'已经可以匹配所有的数字了。

SELECT LENGTH(TRIM(TRANSLATE(FIELD,'*',' 0123456789'))) FROM TABLE_NAME 

使用 regexp_replace改写为:
我们希望将所有的数字都替换为空,再去除空格,看看最后的式子的长度是不是等于0,如果等于0的话,我们可以判断,整个式子都是由数字构成的

SELECT LENGTH(TRIM(regexp_replace(FIELD,'[0-9]',' '))) FROM TABLE_NAME 

其他用法:
指定起始位置匹配、指定匹配出现的序数、额外参数忽略大小写参考regexp_replace()。

PS:
函数语法:

regexp_replace(source_char,pattern[,replace_string[,position[,occurren
ce[match_option]]]])

说明:

  • 用 replace_string 指定的字符串替换源字符串中与 pattern 指定的正则表达式相匹配的字符串。
  • source_char 源字符串。该参数支持的数据类型与 8a 的 replace 函数的 src 参数一致。
  • pattern 正则表达式。每个正则表达式最多可包含 512 个字节。具体语法规则请参考 PCRE-7.8 版本的语法规则说明
  • replace_string 替换字符串。替换字符串可以包含反向引用的数字表达式(\n,n 的取值范围是[1,9])
  • position 开始匹配的位置,如果不指定默认为 1,即从 source_char 的第一个字符开始匹配。position
    为一个正整数。
  • occurrence 正则匹配的序数。是一个非负的整数,默认值为 0。 指定为 0,则替换所有匹配到的字符串; 如果指定为整数
    n,则替换第 n 次匹配到的字符串;
  • match_parameter 可通过设置该参数改变默认的匹配功能行为。默认情况下“.”不匹配换行符,源字符串被看作一行。参数可选项如下:
    i:大小写不敏感;
    c:大小写敏感;
    n:点号(.)不匹配换行符号;
    m:多行模式;
    x:扩展模式,忽略正则表达式中的空白字符。
  • 用户同时指定多个互斥参数可选项时,系统按照最后一个参数处理。用户指定 match_parameter
    参数选项(i,c,n,m,x)以外的选项时,系统报错。
  • regexp_replace 函数的
    replace_string、position、occurrence、match_parameter参数都能省略,若上述 4
    个参数中的任何一个省略,省略参数后的所有参数都不能设置,若需要设置后续参数则必须给出所设置参数的上一个参数的值。
  • 由于 sql 语法与 pcre 正则语法都使用反斜杠(‘’)作为转义符。所以在
    pattern中应使用连续两个反斜杠(‘')作为正则的转义符。 regexp_replace 函数不支持递归。
  • 如果 source_char 参数为运算结果而非表的实体列,且此运算结果大于 512个字节,则函数报错。
  • 当前版本不支持group捕获后的替换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/625154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线客服系统如何与社交媒体集成?

在线客服系统与社交媒体的集成可以实现以下功能: 直接接入社交媒体平台:通过API集成,客服系统可以与主流社交媒体平台(如微信、微博、Facebook等)直接对接,客户可以直接在社交媒体上发起咨询或投诉&#x…

Java持久层框架之争:选择最佳方案来提升你的开发效率!

1、前言 在现代软件开发领域,选择适合的持久层框架是至关重要的一步。持久层框架可以帮助我们管理数据访问、数据库连接、事务处理等复杂的数据库操作,从而提升开发效率和代码质量。 然而,在众多的Java持久层框架中,选择最佳方案并…

ActiveMQ:专注消息传递,助您构建高效稳定的系统

在数字化世界的今天,应用程序和系统之间的通信变得日益重要,为了确保数据能够在不同的服务和组件之间高效、可靠地传输,消息队列技术应运而生。 Apache ActiveMQ 作为一种流行的开源消息队列技术,为企业级应用提供了强大的支持&am…

LeeCode前端算法基础100题(19)反转字符串中的单词

一、问题详情: 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格…

防止网站被采集的10个技巧

防止网站被采集的10个技巧 一、robots.txt文件设置 robots.txt文件是用来告诉搜索引擎哪些页面可以被抓取,哪些页面不应该被抓取的。通过修改robots.txt文件,可以控制搜索引擎爬虫对网站的访问行为。 二、设置meta标签 在网页头部添加meta标签&#x…

算法通关村番外篇-LeetCode编程从0到1系列五

大家好我是苏麟 , 今天带来算法通关村番外篇-LeetCode编程从0到1系列五 . 数学 1523. 在区间范围内统计奇数数目 描述 : 给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。 题目 : LeetCode 1523. 在区间范围内统计奇…

Spring Data JPA 踩过的坑实录

前言 游戏中台一直在使用spring 全家桶, 本文会左右使用Spring Data JPA的坑点记录总结 主要给大家总结介绍了关于使用Spring JPA注意事项及踩过的坑。 案例1: 为什么只调用了 org.springframework.data.repository.CrudRepository#findById(ID id) 却…

孤儿进程与僵尸进程以及僵尸进程的解决

孤儿进程: 定义: 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程( Orphan Process )。 过程: 每当出现一个孤儿进程的时候,内核就…

rtklib读取原始数据是一次读取了一个文件的全部数据

一般来说,rtklib读取观测值文件(o文件)和导航文件(n文件)进行解算。 读取文件的时候,并非一次读取一个历元,而是将一个文件所有历元的数据都读取完毕以后,再进行解算。 这看起来是…

《C++大学教程》4.34阶乘

题目: 对一个非负整数n来说,它的阶乘可以写成 n! (读作“n的阶乘”),其计算公式定义如下: n! n x (n-1) x (n-2)x......x1(对于大于1的 n ) 和 n! 1 ( 对于等于0或者等于1的n ) 例如,5&…

重学Java 6 流程控制语句

我与我,至死不渝 ——24.1.15 模块重点: ①会使用Scanner和Random ②会使用switch以及知道case的穿透性 ③会使用if ④会使用for循环,while循环,嵌套循环 一、键盘录入_Scanner 1.概述:是Java定义好的一个类 2.作用&am…

经典算法-模拟退火算法的python实现

经典算法-模拟退火算法的python实现 模拟退火算法基本思想 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却。加温时,固体内部粒子随温度升高变为无序状,内能增大,而缓慢冷却时粒子又逐渐趋有序。…

网络安全等级保护测评规划与设计

笔者单位网络结构日益复杂,应用不断增多,使信息系统面临更多的风险。同时,网络攻防技术发展迅速,攻击的技术门槛随着自动化攻击工具的应用也在不断降低,勒索病毒等未知威胁也开始泛滥。基于此,笔者单位拟进…

一篇文章带你搞懂多线程面试相关的一些问题

目录 1.Callable接口 1.1使用Callable接口来创建线程 1.1相关面试题: 介绍下 Callable 是什么 2.JUC常见的类(java.util,concurrent) 2.1ReentrantLock ReentrantLock和sychronized的区别 3.信号量 4.CountDownLatch 5.线程安全的集合类 5.1多线…

yolov7_Obb环境安装

下载obb代码之后,除了安装python和pytorch环境,由于还需要编译nms部分的c代码,因此还需要安装Visual Studio. 这里推荐安装Visual Studio2019版本。 然后在系统环境中配置环境变量 C:\Program Files (x86)\Microsoft Visual Studio\2019\Co…

案例127:基于微信小程序的预约挂号系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

文件按名称分类,批量归类到指定文件夹

我们的生活中充满了各种各样的文件:工作报告、家庭照片、旅行纪念品等,然而文件管理却是一个让人头疼的问题。你是否也曾在寻找某些文件名的重要文件,却因为文件混乱无章的堆放而感到烦躁不安?现在,有了我们【文件批量…

HTML--JavaScript--引入方式

啊哈~~~基础三剑看到第三剑,JavaScript HTML用于控制网页结构 CSS用于控制网页的外观 JavaScript用于控制网页的行为 JavaScript引入方式 引入的三种方式: 外部JavaScript 内部JavaScript 元素事件JavaScript 引入外部JavaScript 一般情况下网页最好…

【JavaScript】关于三元运算符

1.基本用法 JavaScript的三元运算符是一种简洁的条件表达式,它允许你在一行代码中根据条件的真假选择不同的值。它的语法如下: condition ? expression_if_true : expression_if_false; condition 是一个计算结果为布尔值的表达式。如果 condition 为…

积极参与建设“一带一路”,川宁生物与微构工场达成战略合作

2024年1月12日,北京微构工场生物技术有限公司(以下简称“微构工场”)与伊犁川宁生物技术股份有限公司(“川宁生物”)宣布签订战略合作协议,双方将共同出资设立合资公司,加速生物制造产业化落地&…