Sql server 2008 与表中的字符串进行比较
我有两列数据相似(如下所示) 表1Sql server 2008 与表中的字符串进行比较,sql-server-2008,substring,Sql Server 2008,Substring,我有两列数据相似(如下所示) 表1 CHMedicalCorpINC UniversalStd SummitCorp 表2 CHMedicalCorp UniversalStdOrlando SummitCorpINC 我想逐字比较这两栏;如果我使用的是子字符串,那么它会显示与13个字母或完全匹配的值 因此,输出只提供CHMedicalCorp而不提供其他两列。我想显示另外两列 SUBSTRING(a.table1, 1, 13) = SUBSTRING(c.table
CHMedicalCorpINC
UniversalStd
SummitCorp
表2
CHMedicalCorp
UniversalStdOrlando
SummitCorpINC
我想逐字比较这两栏;如果我使用的是子字符串,那么它会显示与13个字母或完全匹配的值
因此,输出只提供CHMedicalCorp
而不提供其他两列。我想显示另外两列
SUBSTRING(a.table1, 1, 13) = SUBSTRING(c.table2, 1, 13)
我想让它告诉我任何匹配到13或更少的东西。有没有一种方法可以做到这一点,或者有一个函数可以让我做到这一点 如果下面的查询在表中有任何Id,它将工作
SELECT T1.*
FROM TableName T1
JOIN TableName T2 ON T2.Id = T1.Id
WHERE T1.Table1 like '%' + T2.Table2 + '%'
OR T2.Table2 like '%' + T1.Table1 + '%';
如果表中没有Id,可以使用以下方法:
SELECT T1.*
FROM TableName T1, TableName T2
WHERE T1.Table1 like '%' + T2.Table2 + '%'
OR T2.Table2 like '%' + T1.Table1 + '%'
使用给定数据执行示例:
DECLARE @TestTable TABLE (Id INT, Table1 VARCHAR (100), Table2 VARCHAR (100));
INSERT INTO @TestTable (Id, Table1, Table2) VALUES
(1, 'CHMedicalCorpINC', 'CHMedicalCorp'),
(2, 'UniversalStd', 'UniversalStdOrlando'),
(3, 'SummitCorp', 'SummitCorpINC'),
(4, 'Hello', 'Welcome');
SELECT T1.*
FROM @TestTable T1
JOIN @TestTable T2 ON T2.Id = T1.Id
WHERE T1.Table1 like '%' + T2.Table2 + '%'
OR T2.Table2 like '%' + T1.Table1 + '%'
还有别的办法吗?因为这需要很长时间才能执行。