首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SQL查询中保留一些数字并删除其他数字

如何在SQL查询中保留一些数字并删除其他数字
EN

Stack Overflow用户
提问于 2022-04-01 05:47:46
回答 1查看 79关注 0票数 0

假设我的数据是:

代码语言:javascript
运行
复制
abcd abcd aaa 1234 1234566789 abcd abcd aaa 123456789 1234sfjsalfj

我想做的是:

  1. 如果一个数字是3到6位,并且它前面有aaa,那么我保留它。
  2. 如果前面没有aaa,或者数字超出了我的范围(3-6),我不需要其他数字。

因此,应将此示例转移到:

代码语言:javascript
运行
复制
abcd abcd aaa 1234 abcd abcd sfjsalfj

如何在雅典娜SQL中做到这一点?也许一个查询都没有。使用with或任何其他查询组合也可以。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-01 07:07:17

您应该能够使用此regex在一个查询中执行替换操作:

代码语言:javascript
运行
复制
(?<!aaa |\d)\d+\s*|(aaa (\d{1,2}(?!\d)|\d{7,})\s*)

这查找没有aaa前面的任何数字,或者前面没有aaa的1、2或>6位数字。任何匹配都应替换为空字符串(使用两个参数版本的regexp_replace,即

代码语言:javascript
运行
复制
SELECT regexp_replace('abcd abcd aaa 1234 1234566789 abcd abcd aaa 123456789 1234sfjsalfj', '(?<!aaa |\d)\d+\s*|(aaa (\d{1,2}(?!\d)|\d{7,})\s*)')

Regex在regex101上的演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71702323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档