2017-09-21 3 views
3

Ich habe eine Case-Anweisung, wo ich versuche, zwei Werte aus einem Feld zu ändern.SQL Server T-SQL Ersetzen

CASE 
WHEN prod_map.Product_ID1 = 'CR' 
THEN REPLACE(REPLACE(cl.trade_day_count, 'ACT','ACTUAL'),cl.trade_day_count, 
'ACT+1', 'ACTUAL') 
END, 

so, wenn cl.trade_day_count der 'ACT' Wert enthält oder 'ACT + 1' dann 'ACTUAL' ändern

+0

Die Ergebnis des 1. Ersetzens ist der Wert, den Sie als 1. Parameter der 2. Ersetzungsfunktion verwenden möchten; Daher brauchen Sie cl.trade_date_count nicht erneut. Ersetzen nimmt 3 Parameter, wenn ich mich erinnere, äußerste zeigt 4. – xQbert

+0

Wenn wir annehmen können, dass '~' nicht in 'cl.trade_day_count' ist und nie sein wird ... http://rexttester.com/XYVO11480' Ersetzen (REPLACE (REPLACE ('~' + cl.trade_day_count + '~', '~ ACT + 1 ~', 'AKTUELL'), '~ ACT ~', 'ACTUAL'), '~', '') ' – xQbert

Antwort

2

Antwort Arbeiten von Alex K. Kommentar:

REPLACE(REPLACE(cl.trade_day_count, 'ACT','ACTUAL'),'ACTUAL+1', 'ACTUAL') 
+1

Dies würde ACT + 1 -> ACTUAL + 1 ersetzen, aber ich denke, er will ACTUAL allein und hat ein Überlappungsproblem –

+1

'ERSETZEN (CL.trade_day_count, 'ACT', 'ACTUAL'), 'ACT + 1', ' ACTUAL ') scheint für ACT- oder ACT + 1-Werte zu funktionieren. – xQbert

+0

@fercstar Betreffend bearbeiten: Woher wissen Sie, dass sie nicht wollen, dass alle anderen Werte null sind? das andere war nicht in der ursprünglichen Frage. vielleicht, wenn es CR ist, wollen sie nur ACT und ACT + 1 Werte aber angezeigt mit Actual? – xQbert

Verwandte Themen