2016-08-11 3 views
0

Я ищу способ изменить/создать новый столбец из существующего столбца запроса для умножения строк.Изменение данных столбцов в SQL Server

Моя оригинальная колонка выглядит следующим образом:

parttype_name 
    --------------- 
    MY 4KXDVV F H 
    MY 4KXDVV F H 
    MY 4KXDVV F H 
    MY 4KXDVV F H 
    A4 4BXDCV C X 
    A4 4BXDCV C X 
    A4 4BXDCV C X 
    A4 4BXDCV C X 
    A4 4BXDCV C X 

То, что я прошу, чтобы найти простой способ в одной строке (если это возможно), чтобы обновить/создать новый столбец для следующих данных: (если данные столбца «MY 4KXDVV FH», затем обновить его до Н5, если «A4 4BXDCV CX», затем обновить его до X3 ... и так владеть для всех строк столбцов.

Спасибо,

+0

Не получать, «MY 4KXDVV F H», а затем обновить его до H5 - было бы конкретным значением для обновления с помощью H5? – pedram

+1

Не могли бы вы объяснить логику обновления? Или это жесткий код? –

+0

Пожалуйста, уточните, почему 'H5' и почему' X3'. – gofr1

ответ

0

Вы можете попробовать заменить функция вроде этого:

select parttype_name, 
     replace(parttype_name,'MY','H5') as edited_parttype_name 
from MyTable 

Edit: Вы можете гнездятся звонки заменить, например:

select parttype_name, 
     replace(
     replace(
     replace(parttype_name, 
     'MY','H5'), 
     'YY','H4'), 
     'ZZ','H3') 
     as edited_parttype_name 
from MyTable 

Только заботьтесь открывающего закрывающей скобкой

+0

Это похоже на то, что ему нужно сделать больше работы, чтобы узнать уникальные значения и сделать более длинный запрос для обновления этих динамических значений ... – pedram

+0

Могу ли я сделать это для более одного парметера в одном строка кода? Например, чтобы добавить к нему replace (parttype_name, YY, 'H4'), как edit_parttype_name –

+0

Да, я только что отредактировал свой ответ –

0

Может быть, вы хотите CASE STATEMENT

SELECT 
    parttype_name, 
    CASE parttype_name 
     WHEN 'MY 4KXDVV F H' THEN 'H5' 
     WHEN 'A4 4BXDCV C X' THEN 'X3' 
     --WHEN '' THEN '' 
    END 
FROM 
    your_table; 
+0

Как будто ему нужно сделать больше работы, чтобы узнать уникальные значения и сделать более длинный запрос для обновления эти динамические значения – pedram

0

Я предлагаю, если вы больше нет. из записей затем получить различные значения (parttype_name), а затем использовать цикл while или сделать курсор для обновления всех этих значений с определенными значениями, как в вашем примере H5 и H4.

UPDATE TableName 
SET parttype_name = REPLACE(parttype_name, @variablename, @updatevalue) 

Здесь @ VariableName и @updatevalue бы переменные, которые можно использовать определенную логику, чтобы изменить значение @updatevalue динамически.

Дайте мне знать, если вам нужна дополнительная помощь.

+0

Да, у меня есть больше, я не могу обновить таблицу из-за проблемы с разрешением. Как создать новый обновленный столбец с циклом while? (+ для более чем одного типа детали, что означает, как должен выглядеть синтаксис) –

+0

Я просто думаю, что вы можете использовать временную таблицу, вставить все данные, используя цикл while, а затем вставить этот столбец из временной таблицы в существующую, используя где условие. – pedram

Смежные вопросы