【问题标题】:regex - how to select first item from list正则表达式 - 如何从列表中选择第一项
【发布时间】:2018-03-19 23:53:13
【问题描述】:

帮助!我对正则表达式一无所知,但我需要在我的 sql 查询(amazon redshift)中使用它。我有这样的列表:[1245,2324,4433] 我想获得第一个数字(1245)。我该怎么做?

问候

【问题讨论】:

  • 试试regexp(col, '\\d+')

标签: sql regex amazon-redshift


【解决方案1】:
select (regexp_matches('[1245,2324,4433]', '\d+'))[1]

说明:regexp_matches 从字符串中选择第一个数字 (\d+),然后从返回的集合中选择第一个(也是唯一的)元素。

如果在所有 0 行中都找不到数字。

对于 RDS 来说

regexp_substr('[12456,232466,4433]','\\d+')

参考资料:

【讨论】:

  • 我收到错误:[42883][500310] [Amazon](500310) 无效操作:函数 regexp_matches("unknown", "unknown") 不存在; java.lang.RuntimeException: com.amazon.support.exceptions.ErrorException: [Amazon](500310) 无效操作:函数 regexp_matches("unknown", "unknown") 不存在;
  • @monika_w091 然后尝试regexp_substr 而不是docs.aws.amazon.com/redshift/latest/dg/REGEXP_SUBSTR.html
  • select (regexp_substr('[1245,2324,4433]', '\d+')), 结果:空行
  • select (regexp_substr('[12456,232466,4433]','[^,]*')),结果:[12456,如何删除“[”?
  • @monika_w091 尝试改用\\d+ 正则表达式
【解决方案2】:

你可以试试这个:

select replace(split_part('[1245,2324,4433]',',',1),'[','')

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @GreatBigBore 你是什么意思?我不需要澄清,这个 sn-p 解决了从 Amazon Redshift 上提供的字符串中获取第一个元素的问题
  • 该消息由审核系统自动生成;并非所有这些都适用于您。主要问题是真正的答案不是从“你可以尝试”开始的。此外,系统总是怀疑简短的答案,这会吸引更多的评论者,这可能会删除你的问题。如果您能想到要添加的任何有用信息,请添加。但不是填充物!祝你好运。
猜你喜欢
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 2017-12-16
相关资源
最近更新 更多