首页 > 解决方案 > 如何在“,”或“-”或“”之前取子字符串?

问题描述

我在 Presto 中有两个数据集,可以与"po_num".

第一个数据集具有7 或 10 位"po_num"的清洁度。(例如 1234567)

然而,第二个数据集中的 Po_num 有额外的字符串,要么以"," or "-" or " ". (e.g. 1234567-1 or 1234567,1 or 1234567 -1)

我想我需要一个功能

1) 检测第二个 po_num 中第一个非数字字符串的位置和

2)在位置之前取一个子字符串。或者任何其他方式来处理这个......

有什么建议吗?

标签: sqlstringsubstringprestostrpos

解决方案


假设您希望匹配的 7 或 10 位数字总是连续出现,没有任何其他中间字符,那么您可以尝试REGEXP_LIKE在此处使用:

SELECT *
FROM table1 t1
INNER JOIN table2 t2
    ON REGEXP_LIKE(t2.Po_num, '\b' || t1.po_num || '\b');

推荐阅读