[英]SQL - Finding substring matches within the same column
我有一列包含部件和子部件的名称(字符串),我想获得一个包含部件和子部件之间关系的两列表。 如果名称是另一个名称的 substring,则该关系存在。
例如,这就是我所拥有的:
姓名 |
---|
AAA |
BBB |
CCC |
AAA_1 |
AAA_2 |
BBB_1 |
CCC_3 |
我想得到这个:
部分 | 子部分 |
---|---|
AAA | AAA_1 |
AAA | AAA_2 |
BBB | BBB_1 |
CCC | CCC_3 |
尝试以下查询,它给出了准确的 output,我尝试使用 like 子句和自连接
CREATE TABLE SubStrTable
(
Name varchar(20)
);
INSERT INTO SubStrTable (Name) VALUES ('AAA');
INSERT INTO SubStrTable (Name) VALUES ('BBB');
INSERT INTO SubStrTable (Name) VALUES ('CCC');
INSERT INTO SubStrTable (Name) VALUES ('AAA_1');
INSERT INTO SubStrTable (Name) VALUES ('AAA_2');
INSERT INTO SubStrTable (Name) VALUES ('BBB_1');
INSERT INTO SubStrTable (Name) VALUES ('CCC_3');
Select T1.Name As Part,T2.Name As Subpart From SubStrTable T1
Left Join SubStrTable T2
ON T2.Name Like T1.Name + '_[0-9]'
Where T1.Name Not Like + '%_[0-9]'
我们可以在这里尝试自我加入:
SELECT t1.Name AS Part, t2.Name AS Subpart
FROM yourTable t1
LEFT JOIN yourTable t2
ON t2.Name LIKE t1.Name + '[_]%'
WHERE t1.Name NOT LIKE '%[_]%'
ORDER BY t1.Name, t2.Name;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.