none
Syntax Problem mit When Abfrage RRS feed

  • Frage

  • Hallo Spezialisten,

    ich bin gerade am Lernen der When abfrage in Transact SQL und habe ein Problem mit der SYNTAX

    DECLARE @Criterion AS Varchar;
    
    SET @Criterion = 'kg';
    DECLARE @Result AS CHAR(100);
    CASE WHEN @Criterion LIKE 'g' 
    		THEN SET @Result = 'Gramm' 
    		ELSE SET @Result = 'Kilogramm'	
    END;
    SELECT (@Result);

    Auf diese Weise habe ich es schon geschaft

    DECLARE @Criterion AS Varchar;
    SET @Criterion = 'g';
    SELECT
        (CASE WHEN @Criterion LIKE 'g' THEN    'Gramm'
            ELSE                                'Kilogramm'
        END) AS 'Gewicht';

    Ich sehe leider keinen Unterschied zur 1. Version


    Bitte klärt mich über falsche Fachbegriffe auf Beste Grüße Florian Reiter

    Montag, 28. Januar 2013 12:01

Antworten

  • Hallo,

    Ich schätze mal, Du kommst aus der Programmierer-Ecke?

    CASE WHEN kannst Du nur als Fallunterscheidung im Datenfluß verwenden, nicht zur Steuerung des Programmfluß. Hierfür kannst Du die IF ELSE Anweisung verwenden; Dein erstes Statement müsste also so aussehen:

    DECLARE @Criterion AS Varchar;
    
    SET @Criterion = 'kg';
    DECLARE @Result AS CHAR(100);
    IF @Criterion LIKE 'g' 
        SET @Result = 'Gramm' 
    ELSE 
        SET @Result = 'Kilogramm'	
    
    SELECT (@Result);


    Olaf Helper

    Blog Xing

    Montag, 28. Januar 2013 12:06

Alle Antworten

  • Hallo,

    Ich schätze mal, Du kommst aus der Programmierer-Ecke?

    CASE WHEN kannst Du nur als Fallunterscheidung im Datenfluß verwenden, nicht zur Steuerung des Programmfluß. Hierfür kannst Du die IF ELSE Anweisung verwenden; Dein erstes Statement müsste also so aussehen:

    DECLARE @Criterion AS Varchar;
    
    SET @Criterion = 'kg';
    DECLARE @Result AS CHAR(100);
    IF @Criterion LIKE 'g' 
        SET @Result = 'Gramm' 
    ELSE 
        SET @Result = 'Kilogramm'	
    
    SELECT (@Result);


    Olaf Helper

    Blog Xing

    Montag, 28. Januar 2013 12:06
  • Vielen Dank

    Bitte klärt mich über falsche Fachbegriffe auf Beste Grüße Florian Reiter

    Montag, 28. Januar 2013 13:00