استفاده از توابع Scalar بجای case
نویسنده: فرهود جعفری
تاریخ: ۱۳۹۲/۱۱/۰۶ ۲۱:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
Select Case Gen when 0 then 'مرد' when 1 then 'زن' end As Gen From Table
CREATE FUNCTION fcGenName ( @Gen tinyint ) RETURNS nvarchar(20) AS BEGIN -- Declare the return variable here DECLARE @gen nvarchar(20) -- Add the T-SQL statements to compute the return value here set @gen = (SELECT case @Gen when 0 then 'مرد' when 1 then 'زن' end as d) -- Return the result of the function RETURN @gen END
Select fcGenName(Gen) From Table
SELECT CASE @GEN WHEN 0 THEN 'Male' ELSE 'Woman' AS Gender
SELECT IIF(Gen=0,'Male','Woman')
Use Tempdb
Go
CREATE TABLE [Sample] (value int);
INSERT INTO [Sample] VALUES (1),(2),(3),(4),(5),(6);
Go
--simple CASE Expression
SELECT value,
CASE Value
WHEN 1 THEN 'Very Bad'
WHEN 2 THEN 'Bad'
WHEN 3 THEN 'Not Bad'
WHEN 4 THEN 'Good'
WHEN 5 THEN 'Very Good'
WHEN 6 THEN 'Excellent'
ELSE NULL
END AS [Result]
FROM [Sample];
--CHOOSE Scalar Function
SELECT value,
CHOOSE(value,'Very Bad','Bad','Not Bad','Good','Very Good','Excellent')
FROM [Sample];
--nested IIF Scalr Function
SELECT value,
IIF(value = 1, 'Very Bad',
IIF(value = 2, 'Bad',
IIF(value = 3, 'Not Bad',
IIF(value = 4, 'Good',
IIF(value = 5, 'Very Good', 'Excellent'
)
)
)
)
)
FROM [Sample];