2017-10-05 3 views
0

Ich habe diesen Code, der scheint nicht mit dem REPLACE zu arbeiten. Fehle ich etwas hierSQL Server-Update mit WHERE und LIKE

+0

Denken Sie wie verketten müssen mit modifizieren a + –

+0

Define 'funktioniert nicht'. Wie viele Datensätze werden aktualisiert? Sind sie die richtigen? Haben Sie einen Syntaxfehler? – Igor

+0

Markieren Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. –

Antwort

2

Sie haben ein größeres Problem. Sie müssen update die Alias ​​ definiert in der FROM Klausel, nicht die Tabelle.

Es ist möglich, dass Ihr Problem mit dem replace() einen String-Verkettung benötigen:

UPDATE e 
    SET Series = CL.Underlying_Security_Name 
FROM EMIR e INNER JOIN 
    CALYPSO cl 
    ON e.Internal_ID = cl.Trade_ID AND e.Internal_ID_Type = 'CL' 
WHERE cl.Underlying_Security_Name like 'CMBX.NA.%' + REPLACE((SUBSTRING(REPLACE(Underlying_Security_Name,'CMBX.NA.',''), CHARINDEX('.', REPLACE(Underlying_Security_Name,'CMBX.NA.',''))+1,2)),'.','')) 
0
UPDATE emir 
    SET Series = (select CL.Underlying_Security_Name 
FROM EMIR e, 
    CALYPSO cl 
    Where 
e.Internal_ID(+) = cl.Trade_ID AND e.Internal_ID_Type = 'CL' 
And cl.Underlying_Security_Name like 'CMBX.NA.%'REPLACE((SUBSTRING(REPLACE(Underlying_Security_Name,'CMBX.NA.',''),CHARINDEX('.',REPLACE(Underlying_Security_Name,'CMBX.NA.',''))+1,2)),'.','')) 

Nicht sicher zu ersetzen, aber der Rest Code wie oben