尝试在内连接中进行部分字符串匹配

0

【以下的问题经过翻译处理】 我正在尝试在Athena中使用子字符串进行内联查询。条形码的子字符串(例如:3SOLGH3413663)是partycode。在partycodelijst_nanette字段中有对应的名称(partycode = OLGH klantnaam = OLGHEXAMPLE)。我想要连接这些数据库,但无法想出如何以这种方式使用like运算符,有什么解决方案吗?

SELECT "week"("a"."waarneming_waarndt") "week" , "a"."barcd" "barcode" , SUBSTRING("a"."barcd", 3, 4) AS "partycode" , "b"."first_klantnaam" "klantnaam"

FROM (("collo_bup_nrs"."nrs" "a"

LEFT JOIN "retaildcc"."partycodelijst_nanette" "b" ON ("b"."partycode" LIKE '%' + "a"."barcd" LIKE '%'+"b"."partycode"+'%')

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 根据我的理解,这里的用例是要连接两个表,其中连接条件只有当一个列的数据的一部分等于另一个表中另一列的数据时才成立。如果想实现这个目的,则可以直接使用substr()字符串函数。请注意,Athena支持的正确字符串函数是SUBSTR(),而不是SUBSTRING()。Athena在后端使用Presto,因此支持的字符串函数可以在这里https://prestodb.io/docs/current/functions/string.html找到。

如果已经知道条形码中的partycode位置,则可以直接使用SUBSTR()方法来代替LIKE。在语句的ON子句中,可以使用SUBSTR()来获取partycode,然后直接将其与另一个表的partycode列数据进行比较,类似于以下内容:

SUBSTR("a"."barcd", 3, 4) = "b"."partycode"

如果需要,可以在这里https://docs.aws.amazon.com/athena/latest/ug/presto-functions.html找到其他presto函数。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则