اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
گاهی از اوقات نیاز است در کوئریها از بین چندین مقدار یکی انتخاب و بجای مقدار اصلی، رشته یا عبارتی جایگزین، نوشته شود. پر استفادهترین راه حل پیشنهادی، استفاده از عبارت case در داخل کوئری هست که بر اساس موارد ممکن، عبارتهای برگشتی نوشته میشود. این راه حل خوبی به نظر میرسد اما اگر تعداد گزینهها زیاد شود باعث شلوغ شدن متن کوئری و اشکال در بازبینی و نگهداری آن خواهد شد.
یک راه حل دیگر استفاده از توابع نوع Scalar میباشد؛ به این صورت که میتوان مقدار استخراج شده از جدول را به تابع تعریف شده فرستاد و در ازاء، مقدار بازگشتی مناسبی را در خروجی مشاهده کرد. حال به یک مثال توجه کنید:
یک راه حل دیگر استفاده از توابع نوع Scalar میباشد؛ به این صورت که میتوان مقدار استخراج شده از جدول را به تابع تعریف شده فرستاد و در ازاء، مقدار بازگشتی مناسبی را در خروجی مشاهده کرد. حال به یک مثال توجه کنید:
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