• 售前

  • 售后

热门帖子
入门百科

postgresql varchar字段regexp_replace正则更换利用

[复制链接]
123457648 显示全部楼层 发表于 2021-10-26 14:26:18 |阅读模式 打印 上一主题 下一主题
1.替换目的

1).contact字段范例 varchar。
2).去掉字段中连续的两个,每个等号后面数字差别,
  1. effective_caller_id_name=051066824513,effective_caller_id_number=051066824513
复制代码
2.查询原字段内容
  1. select contact
  2. from pbx_agents
  3. where contact ~ 'effective_caller_id_name=' limit 2
  4. "{sip_append_audio_sdp=a=fmtp:18 annexb=no,call_timeout=60,effective_caller_id_name=051066824513,effective_caller_id_number=051066824513,cti_account=9,cti_agent_id=1102441276,cti_account_sid=5be394c3f8754bd89b9618937c687068,absolute_codec_string=\'OPUS,G729 (...)"
  5. "{sip_append_audio_sdp=a=fmtp:18 annexb=no,call_timeout=60,effective_caller_id_name=051066824824,effective_caller_id_number=051066824824,cti_account=9,cti_agent_id=1103211003,cti_account_sid=4f3fae0e71b74bdaa3824e6ec7771815,absolute_codec_string=\'OPUS,G729 (...)"
复制代码
3.查询语句验证替换
  1. select regexp_replace(contact, '(effective_caller_id_name=\d+,)+?','','g')
  2. from pbx_agents
  3. where contact ~ 'effective_caller_id_name='
  4. "{sip_append_audio_sdp=a=fmtp:18 annexb=no,call_timeout=60,effective_caller_id_number=051066824513,cti_account=9,cti_agent_id=1102441276,cti_account_sid=5be394c3f8754bd89b9618937c687068,absolute_codec_string=\'OPUS,G729\'}sofia/gateway/agentProxy/1102441276"
  5. "{sip_append_audio_sdp=a=fmtp:18 annexb=no,call_timeout=60,effective_caller_id_number=051066824824,cti_account=9,cti_agent_id=1103211003,cti_account_sid=4f3fae0e71b74bdaa3824e6ec7771815,absolute_codec_string=\'OPUS,G729\'}sofia/gateway/agentProxy/1103211003"
复制代码
4.执行替换利用
  1. update pbx_agents set contact = regexp_replace(contact, '(effective_caller_id_name=\d+,)+?','','g')
  2. where contact ~ 'effective_caller_id_name='
  3. Query returned successfully: 3929 rows affected, 505 msec execution time.
复制代码
5.查询验证替换
  1. select contact
  2. from pbx_agents
  3. "{sip_append_audio_sdp=a=fmtp:18 annexb=no,call_timeout=60,cti_account=9,cti_agent_id=1100891004,cti_account_sid=23869df09f2f47f0ae80a7cbc45e5185,absolute_codec_string=\'OPUS,G729\'}sofia/gateway/agentProxy/1100891004"
  4. "{sip_append_audio_sdp=a=fmtp:18 annexb=no,call_timeout=60,cti_account=9,cti_agent_id=1102081069,cti_account_sid=9f2c1574fcb5497994cb9b892aee0d1c,absolute_codec_string=\'OPUS,G729\'}sofia/gateway/agentProxy/1102081069"
复制代码
补充:PostgreSql  regexp_replace 替换括号里面全部字符串
我就废话不多说了,大家还是直接看代码吧~
  1. // PG 数据 替换数据中的 例如(1222-2) 中的所有值
  2. select regexp_replace('在激励(1222-2)','(\(.*\))','','')
复制代码
以上为个人经验,渴望能给大家一个参考,也渴望大家多多支持脚本之家。如有错误或未思量完全的地方,望不吝见教。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作