Я пытаюсь обновить один столбец с именем "Имя" в одной таблице, используя соглашения об именах из другой таблицы.
Мой сценарий ниже не работает, и я не совсем уверен, почему... Либо получите синтаксическую ошибку, либо другой способ, которым я пытался это сделать, я закончил все "Имя" как NULL:
UPDATE table1
SET Name =
ISNULL(
(SELECT TOP 1 CorrectSSPname
FROM table2
WHERE UPPER(Name) LIKE '% + UPPER(WrongSSPname) + ‘%')
, Name
)
WHERE DATE >= '2018-07-01'
Я могу заставить "понравиться" работать с использованием следующего сценария для одного обновления, но не смог выполнить несколько обновлений с помощью приведенного выше сценария:
UPDATE table1
SET Name = 'xxx'
WHERE Name like 'yyy'
Вы можете попробовать такой запрос:
UPDATE tabel1 tbl1
LEFT JOIN table2 tbl2 ON UPPER(tbl2.WrongSSPname) LIKE CONCAT('%', UPPER(tbl1.Name), '%')
SET tbl1.Name = tbl2.CorrectSSPname
WHERE tbl1.DATE >= '2018-07-01'
'
(примечание: это не обычные одинарные кавычки!) Тоже в вашем исходном запросе или это просто произошло, когда вы скопировали его сюда? (Вы случайно не написали запрос в редакторе офисных документов, таком как Microsoft Word?)