Я получаю «неожиданный» результат с запросом на обновление в SQL Server 2012. Это то, что я пытаюсь сделать.Неожиданное выполнение запроса на обновление в SQL
Из колонки (Identifier), составленной в ID ','name
(например, 258967, Сара Джонс), я должен заполнить другие два столбца: ID
и SELLER_NAME
.
Оригинальный столбец имеет несколько значений с пустым в конце, а остальные с вне его:
'258967,Sarah Jones'
'98745,Richard James '
Это запрос на обновление, что я выполнения:
UPDATE SELLER
SET
IDENTIFIER = LTRIM(RTRIM(IDENTIFIER)),
ID = Left(IDENTIFIER , charindex(',', IDENTIFIER)-1),
SELLER_NAME = UPPER(RIGHT((IDENTIFIER),LEN(IDENTIFIER)-CHARINDEX(',',IDENTIFIER)));
Но я неверный результат в конце
258967,Sarah Jones 258967 SARAH JONES
98745,Richard James 98745 ICHARD JAMES
То же самое происходит со всеми именами, которые имеют пробел в en д. На данный момент мне интересно, если бы я указал, что хочу уничтожить все пробелы в начале и в конце значения IDENTIFIER в качестве первого действия, почему система обновляет идентификатор и SELLER_NAMES, а затем делает это действие ?.
Только для указания: Столбец IDENTIFIER является частью таблицы продавца, которая обновляется от другого лица, которое импортирует данные из файла Excel. Я получаю эти значения, и мне нужно нормализовать информацию. Я только могу прочитать таблицу ПРОДАВЦА, учтите это перед ответом
Это то, что вы получаете за паршивый дизайн стола. Если ваш дизайн был правильно нормализован, каждое из этих значений будет иметь свое собственное поле, и вы не будете застревать, пытаясь обновить значения с помощью строковых операций. подумайте, насколько проще было бы «обновить имя продавца set = 'fred', где name = 'sarah'', чем весь этот мусор charindex/len/right. –
Что-то, о чем вы нам не говорите. Нет никакого способа, чтобы «Richar» в «98745, Richar James» трансформировался вашим кодом во что-либо, содержащее подстроку «ICHARD» –
Получите те же результаты, если вы выполняете 'SET IDENTIFIER = LTRIM (RTRIM (IDENTIFIER) 'сначала в отдельном обновлении, а затем установить' ID' и 'SELLER_NAME'?Я думаю, что столбец «IDENTIFIER» может иметь конечное пространство при установке «SELLER_NAME» и что это может испортить разбор. –