SQL синтаксическая ошибка с подстрокой и charindex - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть этот скрипт:

update edi_file_steps
  set
    user_id= table_B.id,
    message= SUBSTRING( message, 1, CHARINDEX('[',message)-1)
from edi_file_steps table_A INNER JOIN GU_User table_B
where message LIKE '%Downloaded%' 
  AND table_B.login = SUBSTRING( 
    message, 
    CHARINDEX('[', message) + 1, 
    len(message) - CHARINDEX('[',message)-1
  );

Я получаю sql синтаксическую ошибку в строке 4: неожиданный токен. Что-то не так с моим скриптом? sql

1 Ответ

0 голосов
/ 08 апреля 2020

Если вы используете SQL Сервер, у вас есть неправильный JOIN. И очень плохие псевдонимы таблиц. Возможно, это то, что вы хотите:

update fs
    set user_id = u.id,
        message = SUBSTRING(fs.message, 1, CHARINDEX('[', fs.message)-1)
    from edi_file_steps fs INNER JOIN
         GU_User u
         on u.login = SUBSTRING(fs.message, CHARINDEX('[', fs.message)+1, len(fs.message)- CHARINDEX('[',fs.message)-1 )
    where message LIKE '%Downloaded%' ;

РЕДАКТИРОВАТЬ:

В MySQL, это будет:

update edi_file_steps fs INNER JOIN
       GU_User u
       on fs.message like concat('%[', u.login, ']%')
    set user_id = table_B.id,
        message = substring_index(fs.message, '[', 1)
    where message LIKE '%Downloaded%' ;
...