如何匹配第 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

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

【问题讨论】:

您是要替换还是提取它? 为什么不使用日期函数? SUBSTRINGLIKE 会起作用 - 但如果您在约会时使用它,请使用正确的工具。 @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)的主要内容,如果未能解决你的问题,请参考以下文章

51nod_1122:机器人走方格 V4 (矩阵快速幂)

Codeforces 1096D

Leetcode Promblem5

动态规划(下):如何求得状态转移方程并进行编程实现?

agc005d~K Perm Counting

万能的二分