sql - 删除 HIVE 中的部分字符串

标签 sql string hadoop hive hiveql

我正在尝试删除 HIVE 中的字符串的一部分。我想删除列中所有记录的最后十一个字符。数据如下:

1018492743|0001-01-01

我希望它看起来像:

1018492743

我试过的代码是这样的:

选择右(a.ord_id, len(a.ord_id)-ll)

它不起作用,因为 len 不是 HIVE 中的函数

我遇到的另一个问题是某些记录的格式已经正确。这是否意味着我需要创建一个案例语句来对此进行检查?

最佳答案

您可以使用正则表达式提取 | 字符之前的数字:

hive> select regexp_extract('1018492743|0001-01-01','([0-9]*)\\|',1);
OK
1018492743

或者使用 substr 获取前 10 个字符:

hive> select substr('1018492743|0001-01-01',1,10);
OK
1018492743

或者完全像您描述的那样使用 length 和 substr 来获取没有最后 11 个字符的子字符串:

hive> select substr('1018492743|0001-01-01',1,length('1018492743|0001-01-01')-11);
OK
1018492743

另一种使用 split() 的解决方案:

hive> select split('1018492743|0001-01-01','\\|')[0];
OK
1018492743

在此处查看文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

关于sql - 删除 HIVE 中的部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46180835/

相关文章:

java - 如何替换字符串中的最后一个单词

hadoop - Hadoop如何处理没有键值结构的文件

java - 单词计数中Mapper <K1,V1,K2,V2>中K1和K2的用途是什么?

validation - 比较不同服务器上2个不同数据库之间数据的最佳方法

java - 在数据库中存储和搜索集(具有许多可能的值)(来自 Java)

sql - 查找列字符串值的组合

sql - 如何在 pyspark 的 postgres jdbc 驱动程序中使用 nextval()?

sql - 在mysql中, "explain ..."总是安全的吗?

javascript - 使用 javascript 和 jquery 在某个符号后更改格式

java - Gson.toJson() 方法返回嵌入 "data"的字符串