如何在连接条件下使用修剪功能。?

How to use trim function in join condition.?

提问人:Balaji R B 提问时间:9/11/2023 最后编辑:MatBailieBalaji R B 更新时间:9/13/2023 访问量:73

问:

我有一个数据集,在其中一列中,我有像 和 这样的值。两者的值相同,但添加了一个空格。在这种情况下,数据不一致。'1-M3 [J]''1 - M3 [J]'

我用了:

Split(column,'[-]')[0]

它只会给值 1 一次。

Split(column,'[ - ]')[0]这将只给出 1 个值。

我希望检索这两个值,我请求您的帮助,在连接条件下使用修剪?

预期输出为: 1,1

SQL 拆分 配置单元 修剪

评论

0赞 Jonas Metzler 9/11/2023
请阅读并遵循 stackoverflow.com/help/minimal-reproducible-example
2赞 NickW 9/11/2023
嗨 - 从您的问题中不清楚您要实现的目标。请用示例来更新您的问题,说明您发布的内容以及您希望的结果是什么。提供不起作用的解决方案(使用拆分)的详细信息对任何人都没有真正的帮助。如果您只是想使 “1 - M3 [J]” = “1-M3 [J]”,那么只需使用 REPLACE(column1, “ - ”, “-”)
0赞 MatBailie 9/13/2023
使用 UPDATE 语句清理数据,然后运行查询。不要在联接期间清理数据,因为联接效率非常低,并且会妨碍使用索引。

答:

0赞 Koushik Roy 9/11/2023 #1

用于将多余的空格替换为空白 '',然后在联接中使用它。REPLACE

REPLACE(Column1, " ", "")

评论

0赞 Balaji R B 9/11/2023
不,我不需要更换。我只需要输出中的值 1...。我会在加入中使用它。
0赞 Koushik Roy 9/12/2023
你能不能 ?substr(col,1,1)
-1赞 Mehul 9/13/2023 #2

您可以使用以下功能块:

import re
data = ['1-M3[J]', '1-M3[J]']
number = []
for item in data:
    match = re.findall(r'\d+', item)
    if match:
        number.extend(match)
number = [int(num) for num in number]
print(number)

评论

0赞 MatBailie 9/13/2023
在 hive 中,而不是 python
0赞 Mehul 9/13/2023
哦好吧,对不起,在 Hive 中不太好