GBASE regexp_replace函数 与 db2 translate函数比较

这篇具有很好参考价值的文章主要介绍了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]]]])

说明:文章来源地址https://www.toymoban.com/news/detail-792329.html

  • 用 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捕获后的替换。

到了这里,关于GBASE regexp_replace函数 与 db2 translate函数比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • db2迁移至oracle

    (1)用java连接数据库(2)把DB2数据导出为通用的格式如csv,json等(3)导入其他数据库,比如oracle,mongodb。这个方法自由发挥的空间比较大。朋友说他会用springboot自带的包来导,我没有进行测试。 (2)根据oracle的官方指导,使用sql server进行迁移 db2迁入oracle,网站官方有

    2024年02月10日
    浏览(37)
  • DB2实现正则表达式

    db2 11.1 及以上版本支持正则表达式,但是db2 10.5及以下版本不支持正则表达式,需要手工创建正则表达式函数。 https://download.csdn.net/download/huryer/88101372?spm=1001.2014.3001.5501

    2024年02月15日
    浏览(43)
  • DB2 数据库监控用户赋权手册

    皮皮运维平台数据统一采集用户(DBAA)需要被监控数据库赋予对应下查询表、表函数以 及获取数据库监控数据的权限,具体授权操作有以下三部分。 实例用户 执行命令,并将结果重定向到 grant_select_to_dbaa.sql 文件中 实例用户 执行 db2 -tvf grant_select_to_dbaa.sql 进行赋权。 实例

    2024年02月07日
    浏览(35)
  • NineData:高效、安全、可靠的DB2数据管理平台

    Db2 是老牌厂商 IBM 研发和维护的关系型数据库管理系统。作为一个拥有悠久历史的数据库系统,Db2 凭借它的高可靠、可扩展和高安全性等诸多优点,在如今的数据库市场依然占据相当大的份额。 对于诸多金融行业的企业而言, Db2 作为承载其核心业务数据的数据库系统,有着

    2024年02月08日
    浏览(36)
  • 技术选型指南:Oracle、SQL Server还是DB2?

    Oracle vs SQL Server vs DB2 - 选哪个好? 在企业级数据管理领域,常用的几个选择有Oracle、SQL Server和DB2。 首先,我们从以下几个方面做一下对比: 1. 性能和稳定性: Oracle: Oracle就像是那种精密的瑞士手表,对于大型企业级应用来讲,它处理复杂的、规模庞大的事务就像切黄油一样

    2024年02月20日
    浏览(53)
  • Linux系统安装DB2数据库的详细步骤

    1、DB2数据库的安装 一、将DB2的安装介质上传至/home目录,并解压:    tar –zxvf v9.5fp3_linuxx64_server.tar.gz 二、执行LANG=C 三、进入解压后的server目录(cd server/),执行./db2setup,步骤如下: # cd /home # tar -zxvf v9.7_linuxx64_server.tar.gz # cd server/ # ./db2setup     请额外注意:这里选择 Do

    2024年02月08日
    浏览(45)
  • python使用odbc连接db2、sqlserver数据库

    先介绍安装odbc驱动,如果已安装跳过次环节 参考链接:linux环境odbc驱动安装 - 哔哩哔哩 也可参考微软官网(Windows驱动也有介绍):安装 Microsoft ODBC Driver for SQL Server (Linux) - ODBC Driver for SQL Server | Microsoft Learn ODBC Driver是一种动态链接库 (DLL),支持 ODBC 的应用程序(如 Excel)可

    2024年02月10日
    浏览(42)
  • Db2的时间转换(字符串,时间戳,Unix时间戳)

    Ubuntu 22.04 Db2 11.5.0 参见 https://www.ibm.com/docs/en/db2/11.5?topic=list-datetime-values Db2有3种时间类型: DATE :例如 03/20/2023 ,当前日期的special register为 CURRENT DATE TIME :例如 21:23:23 ,当前时间的special register为 CURRENT TIME TIMESTAMP :例如 2023-03-20-21.23.49.513704 ,当前时间戳的special register为

    2024年02月08日
    浏览(56)
  • DB2 HADR+TSA运维,TSA添加资源组的命令

    Tivoli System Automation(TSA)是一个高可用性集群管理软件,DB2 TSA+HADR高可用方案可以实现DB2 hadr主备的自动检测切换。本文详细介绍了TSA的常用命令,如何把CDC或者DSG添加到TSA集群中,以及TSA的错误分析方法 常用命令: lsrpdomain/lsrpnode - 查询domain和node信息: [db2inst1@p0-pbd-pbd-db2

    2024年02月10日
    浏览(83)
  • 按分隔符分割字符串(DB2/mysql/hive/Oracle)

    1、DB2 --substr+locate/instr DB2没有自己按分隔符分割字符串的函数,只能结合使用 或者在DB2里还可以自己写一个split分割字符串的函数 附:instr函数用法--用来查找指定字符在字符串中出现的位置 DB2中的locate 函数可实现同样的功能,用法同 instr ,只是源字符串和目标字符串的位

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包