我有一個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