2016-04-08 13 views
0

ich diese Bedingung für den Fall verwenden Zeichenfolge zu vergleichen und letzten 2 charbeseitigen letzte 2 Zeichen basierend auf Bedingung

right(tr.item,2) = '%bx' then left(tr.item,len(tr.item)-2) 

zu beseitigen, aber ich mehrere Bedingungen will und letzte 2 Zeichen beseitigen.

Ich habe versucht, diese Aussage

right(tr.item,2) like ('%bx','%cx','%ax') then left(tr.item,len(tr.item)-2) 

Aber ich habe

Msg 102, einen Fehler Ebene 15, Status 11 1, Zeile
falsche Syntax in der Nähe '' auszuführen.

Bitte schlagen Sie den besten Weg vor, dies zu erreichen.

Antwort

0

Ich glaube, Sie wollen diese Logik

(case when right(tr.item, 2) in ('bx', 'cx', 'ax') 
    then left(tr.item, len(tr.item) - 2) 
    else tr.item 
end) 

Sie keine Platzhalter benötigen (ala like), wenn Sie right() verwenden. Und bedingte Logik in SQL wird über den Ausdruck case zur Verfügung gestellt.

+0

Sie haben Recht Ich entfernte Platzhalter und es hat funktioniert. Vielen Dank – neoo

0

Try this ..you eine OR brauchen

((right(tr.item,2) like ('%bx')) 
    or 
    (right(tr.item,2) like ('%cx')) 
    or 
(right(tr.item,2) like ('%ax'))) 
    then left(tr.item,len(tr.item)-2) 
0

Da Sie RIGHT-Funktion verwenden, glaube ich nicht, dass Sie% benötigen. So können Sie tun: rechts (tr.item, 2) IN ('bx', 'cx', 'ax')

Verwandte Themen