基于一个列模式的SAS/SQL连接与另一个列匹配

Vic*_*tor 1 sql sas

我需要在id字段上匹配2个数据集:

数据1:

id
---------
00123abc5
Run Code Online (Sandbox Code Playgroud)

数据2:

id
---
23a
Run Code Online (Sandbox Code Playgroud)

我需要inner joinid列上合并(SQL样式)这两个数据集,但不是data1.id = data2.id.我想要的是data1.id contains data2.id.

所以我想要id第一个数据集中的id字符串包含第二个数据集的字符串的所有行.

GMB*_*GMB 5

在SQL中,使用LIKE运算符:

SELECT d1.id
FROM data1 d1 
INNER JOIN data2 d2 ON d1.id LIKE CONCAT('%', d2.id, '%')
Run Code Online (Sandbox Code Playgroud)

正如TheMouseMaster评论的那样,如果在同一个字段中发现了几个id,这种技术可能会生成重复的输出行.您可以DISTINCT用来消除重复:

SELECT DISTINCT d1.id
FROM data1 d1 
INNER JOIN data2 d2 ON d1.id LIKE CONCAT('%', d2.id, '%')
Run Code Online (Sandbox Code Playgroud)