VII 07 2009

Podmínka v projekci u SQL příkazu

= The Expression in SQL projection (T-SQL)

Někdy je potřeba v projekci SQL dotazu SELECT zapsat podmínku např. pro zobrazování předvolby u zahraničních telefonních čísel. Původně jsem hledal nějaký ekvivalent iff v T-SQL, aby příkaz vypadal nějak takto:

SELECT [FirstName], [LastName], 
iff([Country] = "Slovakia", '+421' + [Phone], [Phone]) FROM Customers

Server při dotazu vrátil chybu

Server: Msg 170, Level 15, State 1, Line 5
Line 2: Incorrect syntax near '='.

Takže tudy cesta nevedla.

Při hledání funkčního, ekvivalentního řešení jsem narazil na následující konstrukci CASE-WHEN-THEN

SELECT 
 [FirstName], [LastName],
 CASE
    WHEN [Country]='Slovakia' 
     THEN '+421 ' + [Phone]
     ELSE [Phone]
     END AS Phone
FROM 
 Customers

která přesně pokrývá moje požadavky. Navíc ji lze rozšířit o více podmínek např. takovýmto způsobem:

SELECT [FirstName], [LastName],
   CASE [Country]
    WHEN 'Germany' 
     THEN '+49 ' + [Phone]
    WHEN 'Mexico'
     THEN '+625' + Phone
    WHEN 'Slavakia'
     THEN '+421 ' + Phone
     ELSE Phone
     END AS Phone
FROM 
 Customers

Ohodnoť příspěvek jako první

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Komentáře

Přidat komentář


(Zobrazí Vaší Gravatar ikonu)  

  Country flag

biuquote
  • Komentář
  • Náhled
Loading