2016-07-09 21 views
0

So versuche ich eine Spalte in einer gespeicherten Prozedur zu formatieren, wenn der Wert "boxter s" Ich möchte es als "Boxter S" abgerufen werden Ich habe den ersten Großbuchstaben aber ich sortiert habe Probleme, die CASE-Anweisung zu verwenden, um den letzten Buchstaben zu einem Großbuchstaben zu machen, wenn in dem Wert ein Leerzeichen enthalten ist. Nicht alle Werte haben ein Leerzeichen, daher die CASE-Anweisung und wenn es ein Leerzeichen gibt, wird nur eins mit einem Buchstaben davor stehen. Hier ist, was ich bisher:sql server WÄHLEN SIE FALL

SELECT 
    CASE UPPER(LEFT(m.model, 1)) + LOWER(SUBSTRING(m.model, 2, LEN(m.manufacturer))) 
    WHEN m.model = % + ' ' 
    THEN UPPER(RIGHT(m.model, 1)) 
    END AS Model 
+0

Was ist mit oberen (rechts (Feld, 1))? –

+0

Ich möchte nicht, dass der letzte Buchstabe jeder Spalte groß geschrieben wird, es sei denn, es gibt ein Leerzeichen. Wenn also der INPUT-Parameter "hurrican" ist, möchte ich nicht, dass er "HurricaN" wird. Es sei denn, ich habe Ihren Punkt verpasst. In welchem ​​Fall könnten Sie sich darum kümmern, meinen Code zu übertreffen und mir zu zeigen, was Sie meinen? –

Antwort

1

Sie wollen etwas wie folgt aus:

select case when substring(model, len(model) - 2, 1) = ' ' then formatted 
else model end model 

Arbeiten an der Fall-Logik und die separat Formatierung.

+0

Ich denke, ich habe es übermäßig kompliziert gemacht, danke dafür. Es funktioniert gut –