2016-08-11 3 views
0

Ich bin auf der Suche nach einer Möglichkeit zum Ändern/Erstellen einer neuen Spalte aus vorhandenen Abfrage Spalte für multiplizieren Zeichenfolgen.Ändern von Spaltendaten in SQL Server

Meine ursprüngliche Spalte sieht wie folgt aus:

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 

Was für ich frage ist eine einfache Art und Weise in einer Zeichenfolge zu finden (wenn möglich) zu aktualisieren/erstellen neue Spalte für die nächsten Daten: (falls Spaltendaten ‚MY 4KXDVV FH‘ dann aktualisieren zu H5, wenn ‚A4 4BXDCV CX‘ dann zu X3 aktualisieren ... und besitzen so für alle Spalten Saiten.

Danke,

+0

Nicht bekommen, 'MY 4KXDVV F H' dann auf H5 aktualisieren - es wäre ein bestimmter Wert, mit H5 zu aktualisieren? – pedram

+1

Können Sie die Logik für die Aktualisierung erklären? Oder ist es Hard-Code? –

+0

Bitte, erarbeiten, warum 'H5' und warum' X3'. – gofr1

Antwort

0

Sie können versuchen, die ersetzen Funktion wie folgt:

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

Edit: Sie können die Anrufe Nest so zu ersetzen,:

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

nur kümmern sich um die Öffnung schließenden Klammer

+0

Es ist wie er mehr Arbeit tun muss, um eindeutige Werte zu finden und eine längere Abfrage zu machen, um diese dynamischen Werte zu aktualisieren ... – pedram

+0

kann ich es für mehr als einen Parmeter in einem tun Codezeile? Zum Beispiel zu ersetzen (parttype_name, YY, 'H4') als edited_parttypname –

+0

ja, ich habe gerade meine Antwort bearbeitet –

0

Mögen Sie CASE STATEMENT

wollen sein
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

Es ist wie er muss mehr Arbeit tun, um herauszufinden, einzigartige Werte und eine längere Abfrage zu aktualisieren diese dynamischen Werte – pedram

0

Ich würde vorschlagen, wenn Sie habe mehr nein. der Datensätze erhalten dann unterschiedliche Werte (parttype_name) und verwenden dann while-Schleife oder einen Cursor, um alle diese Werte mit bestimmten Werten wie in Ihrem Beispiel H5 und H4 zu aktualisieren.

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

Hier @ Variablenname und @updatevalue wäre Variablen Sie eine gewisse Logik verwenden können dynamisch Wert von @updatevalue zu ändern.

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

+0

Ja, ich habe mehr, ich kann die Tabelle aufgrund von Berechtigungsproblem nicht aktualisieren. Wie kann ich eine neue aktualisierte Spalte mit Ihrer while-Schleife erstellen? (+ für mehr als einen Part-Typ, was bedeutet, wie die Syntax aussehen sollte) –

+0

Ich denke nur, Sie können von der temporären Tabelle verwenden, fügen Sie alle Daten mit while-Schleife ein und fügen Sie dann diese Spalte aus der temporären Tabelle in die vorhandene ein einige, wo Bedingung. – pedram

Verwandte Themen