如何匹配第 n 个位置的字符(Cloudera Impala SQL)
Posted
技术标签:
【中文标题】如何匹配第 n 个位置的字符(Cloudera Impala SQL)【英文标题】:How to match a character at nth position (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
我试过到处寻找,但无法弄清楚。非常感谢。
【问题讨论】:
您是要替换还是提取它? 为什么不使用日期函数?SUBSTRING
或 LIKE
会起作用 - 但如果您在约会时使用它,请使用正确的工具。
@WiktorStribiżew 我想替换一个字符。
@Mitch 我需要将日期时间放在字符串中,所以我认为 regexp_replace 将是最简单的解决方案
@a_horse_with_no_name 我正在使用 Impala。似乎 regexp_replace 是我可以替换字符串中的字符的唯一方法。 (cloudera.com/documentation/enterprise/5-9-x/topics/…)
【参考方案1】:
更新:.(.3$)
这对我正在寻找的东西有用。
【讨论】:
以上是关于如何匹配第 n 个位置的字符(Cloudera Impala SQL)的主要内容,如果未能解决你的问题,请参考以下文章