我正在寻找一个SQL查询来标识几乎相同的表中的产品编号。某些产品编号之间的唯一区别是,在产品编号中完全相同的位置,“ /”被替换为“-”。
示例1:
Product number: ab345-2
Product number: ab345/2
示例2:
Product number: z0059966-98
Product number: z0059966/98
感谢您的帮助!
答案 0 :(得分:1)
您可以使用exists
:
select t.*
from t
where exists (select 1
from t t2
where replace(replace(t2.product_number, '/', ''), '-') = replace(replace(t2.product_number, '/', ''), '-') and
t2.product_number <> t1.product_number
);
请注意,这可以找到与缺少这些字符的数字匹配的字符,例如'ab345-2'
和'ab3452'
。此外,它还会删除所有特殊字符,因此它们可以位于任何位置。
答案 1 :(得分:0)
您可以自行加入表格以将每一对重复项放在一行中:
select
t1.product_number,
t2.product_number
from tablename t1 inner join tablename t2
on replace(t1.product_number, '-', '/') = t2.product_number
where t1.product_number like '%-%'
请参见demo。
结果:
| product_number | product_number |
| -------------- | -------------- |
| ab345-2 | ab345/2 |
| z0059966-98 | z0059966/98 |