我有一个MS SQL 2005/2008数据库,并试图比较两个数据表使用子字符串与%通配符尝试和查找其他表中的一个字符的一个字符内的数据。MS-SQL JOIN与多个SUBSTRING和LIKE
实施例是:
UPDATE table1
SET table1.Marker = 1
FROM table1
INNER JOIN table2
ON table1.ForeignKey = table2.ID
AND tabl1.CharacterColumn LIKE SUBSTRING(table2.CharacterColumn , 1, 5) + '%' + SUBSTRING(table2.CharacterColumn , 7, 8)
UPDATE table1
SET table1.Marker = 1
FROM table1
INNER JOIN table2
ON table1.ForeignKey = table2.ID
AND tabl1.CharacterColumn LIKE SUBSTRING(table2.CharacterColumn , 1, 6) + '%' + SUBSTRING(table2.CharacterColumn , 8, 8)
目前需要一段时间来运行该程序的列可以包含最多10个字符和数据集是在300万行一个表1(然而的也许一个数据集300k)和200万行的表2(100k的数据集)。
我的问题是JOIN语句是在列上执行一个字符搜索的最佳方式吗?
我不能给出确切的例子作为数据是受保护的,但是这应该有所帮助:
表2 -
ID | FK | Name
1 | 100 | Phillips
2 | 100 | Bloggs
3 | 100 | Jones
表1 -
ID | Table2FK | Name
1 | 100 | Philpips
2 | 100 | Bloggs
3 | 100 | Jones
正如你见表2记录1在table1记录1的一个字符内,我想识别它。此外,一个字符可以在字符串中的任意位置
你能张贴的两张桌子一些相同的数据?可以让你的问题更清楚 –
当然,我不能给出确切的例子,因为数据是受保护的,但是这应该有所帮助: 表2 - ID | FK |名称 1 | 100 |菲利普斯 2 | 100 | Bloggs 3 | 100 | Jones 表1 - ID |表2FK |名称 1 | 100 | Philpips 2 | 100 | Bloggs 3 | 100 | Jones 正如你所看到的table2记录1在table1记录1的一个字符内,我想识别它。此外,一个字符可以在字符串中的任何点。 – Mecster