【问题标题】:How to match a character at nth position (Cloudera Impala SQL)如何匹配第 n 个位置的字符(Cloudera Impala SQL)
【发布时间】:2019-07-12 08:26:48
【问题描述】:

我正在尝试替换 SQL 中特定位置的字符。我想像这样替换字符串中的第 15 个字符:2019-07-08 06:56:00

我的SQL代码是这样的:

regexp_replace(cast(date_trunc('minute', from_unixtime(mtc.conversion_timestamp)) as string), 'REGEX', '0')

我试过这样的正则表达式:^.{6},但它给了我从 0 到 6 的所有字符。我只需要在第 15 个位置匹配一个 SINGLE 字符。因此,2019-07-08 06:56:00 的匹配应该是 6(从 56)。

基本上,我想把2019-07-08 06:56:00转成2019-07-08 06:50:00

我试过到处寻找,但无法弄清楚。非常感谢。

【问题讨论】:

  • 您是要替换还是提取它?
  • 为什么不使用日期函数? SUBSTRINGLIKE 会起作用 - 但如果您在约会时使用它,请使用正确的工具。
  • @WiktorStribiżew 我想替换一个字符。
  • @Mitch 我需要将日期时间放在字符串中,所以我认为 regexp_replace 将是最简单的解决方案
  • @a_horse_with_no_name 我正在使用 Impala。似乎 regexp_replace 是我可以替换字符串中的字符的唯一方法。 (cloudera.com/documentation/enterprise/5-9-x/topics/…)

标签: sql regex impala


【解决方案1】:

更新:.(.{3}$) 这对我正在寻找的东西有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多