gpt4 book ai didi

sql - Redshift 正则表达式匹配

转载 作者:行者123 更新时间:2023-12-04 08:00:36 26 4
gpt4 key购买 nike

列中有这样的值

NEW_COLUMN
abcd-2020-ab1-01
abcd-2020-ab2-010
abcd-2021-ab1-020
abcd-2021-ab2-125
abcd-2021-ab2-126 abcd-2021-ab2-126 abcd-2021-ab2-126 -- matches all of them
abcd-2021-ab2-126-BC-DEG -- fails to match
问题
我能够正确匹配前 4 条记录。
  • 第 5 个,它获得所有实例。但是我希望只得到第一个。
  • 如果我扩展我的正则表达式以匹配这个,原始的匹配失败。有没有办法在正则表达式中进行“OR”类型的匹配?喜欢匹配第一个模式或第二个模式。

  • 我的密码
    select my_column, regexp_substr(my_column,'[[:word:]]{4}\-(.*)\-[[:digit:]]{1,4}') as extracted
    from my_table
    为了解决第一点,我尝试使用 (.*?)而不是 (.*)但 redshift 抛出错误,因为它不支持。任何解决方法都会有所帮助
    正则表达式说明 [[:word:]]{4} - 查找前 4 个字符 \- - 发现 - (.*) - 找到下一个之前的所有内容 - \- - 发现 - [[:digit:]]{1,4} - 查找 0 到 4 个字符之间的数字

    最佳答案

    您似乎想匹配第一个字符串,然后只将您的模式视为前缀:

    regexp_substr(my_column, '^[[:word:]]{4}\-([^ ]*)\-[[:digit:]]{1,4}[^ ]*')

    关于sql - Redshift 正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66498903/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com