SQL CASTILLO ABREVIADO en SELECCIONAR


Ejemplo

La variante abreviada de CASE evalúa una expresión (generalmente una columna) contra una serie de valores. Esta variante es un poco más corta y guarda la repetición de la expresión evaluada una y otra vez. La cláusula ELSE todavía se puede utilizar, sin embargo:

SELECT Id, ItemId, Price,
  CASE Price WHEN 5  THEN 'CHEAP'
             WHEN 15 THEN 'AFFORDABLE'
             ELSE         'EXPENSIVE'
  END as PriceRating
FROM ItemSales

Una palabra de precaución. Es importante darse cuenta de que cuando se usa la variante corta, la declaración completa se evalúa en cada WHEN . Por lo tanto la siguiente declaración:

SELECT 
    CASE ABS(CHECKSUM(NEWID())) % 4
        WHEN 0 THEN 'Dr'
        WHEN 1 THEN 'Master'
        WHEN 2 THEN 'Mr'
        WHEN 3 THEN 'Mrs'
    END

puede producir un resultado NULL . Esto se debe a que en cada WHEN NEWID() se llama de nuevo con un nuevo resultado. Equivalente a:

SELECT 
    CASE 
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 0 THEN 'Dr'
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 1 THEN 'Master'
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 2 THEN 'Mr'
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 3 THEN 'Mrs'
    END

Por lo tanto, puede pasar por alto todos los casos de WHEN y el resultado es NULL