SQL:在字段中查找重复值,但使用子字符串()

SQL:在字段中查找重复值,但使用子字符串(),sql,sql-server-2000,substring,inner-join,duplicate-removal,Sql,Sql Server 2000,Substring,Inner Join,Duplicate Removal,下面是所有SQL SERVER 2000专家的一个问题: 我只有一张桌子。。。我已经可以找到某个字段中的任何值是否也出现在另一个记录中 例如:有没有记录 “ABCDEFGHI”在一个字段中,然后 “ABCDEFGHI”再次出现在同一个地方 领域但在另一个记录中 但是当我尝试使用子字符串时,我遇到了麻烦 即:是否有任何记录中有“CDEF” 一个字段,然后在该字段中再次“DEFG” 同一领域。。。但在另一个记录中。 (编辑:当然,这不匹配。) 我试着比较一个字段的一部分和另一个字段的一部分。 仅比较

下面是所有SQL SERVER 2000专家的一个问题:

我只有一张桌子。。。我已经可以找到某个字段中的任何值是否也出现在另一个记录中

例如:有没有记录 “ABCDEFGHI”在一个字段中,然后 “ABCDEFGHI”再次出现在同一个地方 领域但在另一个记录中

但是当我尝试使用子字符串时,我遇到了麻烦

即:是否有任何记录中有“CDEF” 一个字段,然后在该字段中再次“DEFG” 同一领域。。。但在另一个记录中。 (编辑:当然,这不匹配。)

我试着比较一个字段的一部分和另一个字段的一部分。 仅比较3-6个字符和4-7个字符。 (我需要为这两个字段指定自己的开始-结束范围。) 具体字母是什么。。。没关系。只是他们“匹配”

这似乎不起作用:

SELECT t1.ID + ' + ' + t2.ID  
FROM InfoTable As t1         
INNER JOIN InfoTable AS t2     ON t1.ID = SUBSTRING(t2.ID, 3, 4) 
(编辑:我也不需要列出任何与其匹配的记录。)

也许

SELECT t1.ID + ' + ' + t2.ID  
FROM InfoTable As t1         
INNER JOIN InfoTable AS t2     ON SUBSTRING(t1.ID,3,6) = SUBSTRING(t2.ID, 4, 7) 
或许

SELECT t1.ID + ' + ' + t2.ID  
FROM InfoTable As t1         
INNER JOIN InfoTable AS t2     ON SUBSTRING(t1.ID,3,6) = SUBSTRING(t2.ID, 4, 7) 

现在还不清楚你想在这里找到什么。是否希望所有包含“CDEF”的记录都链接到包含“DEFG”的所有其他记录?是否所有记录的“CDEF”从位置3开始,链接到所有其他记录的“DEFG”从位置4开始?是否所有记录都具有公共字符串的字符3到6,并链接到具有相同公共字符串的字符4到7的所有其他记录?还有别的吗?在里面的任何地方?不,只是我指定的开始/结束子字符串。从位置a开始,b字符长。。。匹配从位置c开始且长度为d个字符的记录。(当然,b和d必须是相同的,才能发生匹配。)现在还不清楚你想在这里找到什么。是否希望所有包含“CDEF”的记录都链接到包含“DEFG”的所有其他记录?是否所有记录的“CDEF”从位置3开始,链接到所有其他记录的“DEFG”从位置4开始?是否所有记录都具有公共字符串的字符3到6,并链接到具有相同公共字符串的字符4到7的所有其他记录?还有别的吗?在里面的任何地方?不,只是我指定的开始/结束子字符串。从位置a开始,b字符长。。。匹配从位置c开始且长度为d个字符的记录。(当然,b和d必须相同才能进行匹配。)我试过了,它似乎返回了匹配自身的记录。有没有办法排除那些“相同记录”匹配项?在ON子句中添加另一个条件。。。t1.id和t1.id t2.id。这是假设ID是唯一的。如果您给出一个表定义、示例数据和预期结果,这可能是最好的——在发布SQL查询问题时,这总是一个好主意。让我试试。以下哪一项是“更好的”:“将<添加到ON子句”。。。或“添加WHERE子句”?海伦:我认为把它放在ON子句中比较好,因为它清楚地表明你不想链接到同一条记录。(从处理角度看,在这个查询中应该没有任何区别。)使用
可以使相同的两条记录彼此出现两次,如果两个子字符串(t1.ID,3,6)=子字符串(t2.ID,4,7)和子字符串(t2.ID,3,6)=子字符串(t1.ID,4,7)-另一方面,如果只有后者是真的,那么使用
我尝试了,而且它似乎会返回与其匹配的记录。有没有办法排除那些“相同记录”匹配项?在ON子句中添加另一个条件。。。t1.id和t1.id t2.id
。这是假设ID是唯一的。如果您给出一个表定义、示例数据和预期结果,这可能是最好的——在发布SQL查询问题时,这总是一个好主意。让我试试。以下哪一项是“更好的”:“将<添加到ON子句”。。。或“添加WHERE子句”?海伦:我认为把它放在ON子句中比较好,因为它清楚地表明你不想链接到同一条记录。(就处理而言,在这个查询中它应该没有任何区别。)使用
将使相同的两条记录彼此出现两次,如果子字符串(t1.ID,3,6)=子字符串(t2.ID,4,7)和子字符串(t2.ID,3,6)=子字符串(t1.ID,4,7)-另一方面,如果只有后者为真,则使用