我在表格(table1)中創建了一個新列。我正試圖用來自另一個表table2的數據填充它。當我知道兩個字符串中有重疊時,CharIndex返回空值
表1有一個名爲'Name'的列。 'Name'包含一個指示列的語言的子字符串。我希望將這個子字符串與table2的'Language'列進行比較,它包含名稱列中的子字符串,並將相應的LanguageID插入到我的新列中。
所以,舉例來說:
table1
Name
xxXxxxXxxxxxzxzxzxz xxxazxzxxXXXZxxzxzx 2183909213 ENG-UK nfjksdnfnd 723984782347
和表2:
table2
Language | ID
ENG-uk | 1
在table1的名稱列,前後語言後的字符串可以採取任何形式,不同數量的字符。該語言在其之前和之後將始終有一個空格。
所以,我想直到結束:
table1
Name | LanguageID
xx... | 1
我有這個疑問,我認爲應該工作:
INSERT INTO table1 (LanguageID)
SELECT t2.ID FROM table2 t2, table1 t1 WHERE CHARINDEX(LOWER(t2.Language), LOWER(t1.Name)) != null
的問題是,當我運行這個......」 (0行受影響)「,但情況並非如此。
有沒有人有任何想法?
你爲什麼要使用INSERT INTO表1。你不想更新table1的ID列與table2的匹配名稱列嗎? – Kashif
您應該考慮爲第一個表格信息添加單個列。否則,由於子字符串操作,最終會出現性能問題。 從第一個表格可以清楚地看出,表格模式不是標準化的。此外,第一個表模式不適合任何搜索/排序操作。 – Nilish
這是我用來填充我的第一個表信息中的單個列的一次性聲明。這是正常化。 –