= 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