繁体   English   中英

SQL - 在同一列中查找 substring 匹配项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM