I have created a new column in my table(table1) . I am trying to populate it with data from another table, table2.
Table1 has a column called ‘Name’. ‘Name’ contains a substring indicating the language of the column. I wish to compare this substring with the ‘Language’ column of table2, which contains the substring in the name column and insert the corresponding LanguageID into my new column.
So, for instance :
table1
Name
xxXxxxXxxxxxzxzxzxz xxxazxzxxXXXZxxzxzx 2183909213 ENG-UK nfjksdnfnd 723984782347
and table2 :
table2
Language | ID
ENG-uk | 1
In the table1 name column, the string before and after the Language can take any form, a varying number of characters. The language will always have a space before and after it.
So, I want to end up with :
table1
Name | LanguageID
xx... | 1
I have this query which I believe should work :
INSERT INTO table1 (LanguageID)
SELECT t2.ID FROM table2 t2, table1 t1 WHERE CHARINDEX(LOWER(t2.Language), LOWER(t1.Name)) != null
The problem is, when I run this….”(0 row(s) affected)”, which should not be the case.
Does anyone have any ideas ?
The reason that you don’t get any matches at all is that you can’t use the
!=operator to compare null values, you have to useis not nullfor that.However, that will give you a very big result, as the return value from
charindexis never null. When the string isn’t found it returns zero, so that is what you should compare against.Also, you can’t insert columns, you have to first add the column to the table, then update the records: