توابع ریاضی SQL Server؛ آموزش کامل ۲۳ تابع با مثال

آموزش جامع توابع ریاضی در SQL Server

توسط admin | گروه SQL Server | 1405/04/28

نظرات 0

آموزش جامع توابع ریاضی در SQL Server با مثال‌های کاربردی

مقدمه

توابع ریاضی SQL Server فقط برای فرمول‌های دانشگاهی نیستند. در گزارش فروش، محاسبه انحراف بودجه، ظرفیت بسته‌بندی، امتیازدهی، مختصات جغرافیایی، تحلیل آماری، شبیه‌سازی و کنترل کیفیت به آن‌ها نیاز داریم. انتخاب تابع درست باعث می‌شود Query خواناتر، قابل آزمون‌تر و هماهنگ با موتور پایگاه‌داده باشد.

این راهنما ۲۳ تابع مهم ریاضی را در گروه‌های منطقی معرفی می‌کند: قدر مطلق و علامت، گردکردن، توابع مثلثاتی، تبدیل درجه و رادیان، توابع معکوس مثلثاتی، توان و لگاریتم، ریشه و مجذور، ثابت عدد پی و تولید عدد شبه‌تصادفی. برای هر تابع یک مقاله مستقل با ده مثال قابل اجرا نیز در دسترس است.

در SQL Server نوع داده بخشی از فرمول است. محاسبه با int، decimal و float لزوماً نتیجه و ظرفیت یکسانی ندارد. decimal برای ارقام دقیق و کنترل‌شده مناسب است، در حالی که float نمایش تقریبی اعداد علمی و بسیاری از توابع مثلثاتی را فراهم می‌کند. تبدیل ضمنی می‌تواند بخش اعشار را حذف کند یا دامنه خروجی را تغییر دهد.

دقت عددی را با قالب نمایش اشتباه نگیرید. ROUND مقدار را تغییر می‌دهد، اما تبدیل به رشته یا تنظیم ظاهر در ابزار گزارش ممکن است فقط شیوه نمایش را عوض کند. در محاسبات چندمرحله‌ای، بهتر است دقت کامل تا آخرین مرحله حفظ و گردکردن مطابق قاعده کسب‌وکار انجام شود.

توابع ACOS و ASIN دامنه محدود دارند، LOG و LOG10 ورودی مثبت می‌خواهند و SQRT روی عدد منفی معتبر نیست. کنترل داده با CASE، TRY_CONVERT و محدودیت‌های مناسب از توقف Batch جلوگیری می‌کند. با این حال، تبدیل خطا به NULL باید همراه پایش باشد تا مشکل کیفیت داده پنهان نشود.

دسترسی سریع به آموزش توابع

اصول نوع داده، دقت و کارایی

توابعی مانند SIN، COS، TAN، EXP، LOG و SQRT خروجی float تولید می‌کنند. float تقریبی است و مقایسه برابری مستقیم آن با یک عدد نظری مانند صفر ممکن است قابل اعتماد نباشد. به‌جای مساوی دقیق، اختلاف را با یک آستانه کوچک مقایسه کنید.

در decimal دو مفهوم Precision و Scale اهمیت دارد. Precision تعداد کل رقم‌ها و Scale تعداد رقم‌های سمت راست ممیز است. هنگام CEILING، FLOOR، ROUND و POWER باید ظرفیت نوع خروجی را بشناسید؛ زیرا عددی که از نظر ریاضی صحیح است ممکن است در نوع مقصد جا نشود.

عبارت تابعی در WHERE می‌تواند دسترسی ایندکسی را محدود کند. برای نمونه، به‌جای مقایسه ABS(ColumnValue) با حد مشخص، در صورت امکان بازه‌های معادل را روی ColumnValue بنویسید. سپس تابع را فقط در SELECT و برای ردیف‌های انتخاب‌شده اجرا کنید.

در توابع مثلثاتی، ورودی غالباً رادیان است. اگر داده به درجه ذخیره شده، RADIANS تبدیل صحیح را انجام می‌دهد؛ برای ارائه خروجی زاویه به کاربر نیز DEGREES مفید است. ثبت واحد در نام ستون از خطاهای خاموش و پرهزینه جلوگیری می‌کند.

RAND عدد رمزنگاری‌شده تولید نمی‌کند و برای Token، رمز یا شناسه امنیتی مناسب نیست. همچنین رفتار آن در سطح ردیف باید آزمایش شود. برای نمونه‌برداری و مرتب‌سازی تصادفی روش‌های دیگر وجود دارد که هزینه و ویژگی آماری متفاوتی دارند.

توابع داخلی معمولاً Deterministic هستند، اما هر عبارت باید جداگانه از نظر قطعیت بررسی شود. این موضوع در ستون محاسباتی Persisted و ایندکس اهمیت دارد. RAND نمونه شناخته‌شده تابعی با رفتار وابسته به حالت و Seed است.

دسته‌بندی منطقی توابع

گروهتوابعکاربرد
گرد کردن و علامتABS، CEILING، FLOOR، ROUND، SIGNکنترل مقدار، جهت و ظرفیت عدد
توابع مثلثاتی معکوسACOS، ASIN، ATAN، ATN2محاسبات علمی، تحلیلی و تبدیل واحد
توابع مثلثاتیCOS، COT، SIN، TANمحاسبه نسبت‌های زاویه و مدل‌های مهندسی
تبدیل واحد زاویهDEGREES، RADIANSمحاسبات علمی، تحلیلی و تبدیل واحد
توان، لگاریتم و ریشهEXP، LOG، LOG10، POWER، SQRT، SQUAREمحاسبات علمی، تحلیلی و تبدیل واحد
ثابت‌ها و تبدیل زاویهPIمحاسبات علمی، تحلیلی و تبدیل واحد
تصادفی‌سازیRANDمحاسبات علمی، تحلیلی و تبدیل واحد

معرفی تک‌تک توابع و مسیر مطالعه

تابع ABS؛ قدر مطلق

ABS در گروه «گرد کردن و علامت» قرار می‌گیرد. روی کمینه نوع int، ابتدا مقدار را به bigint تبدیل کنید تا سرریز رخ ندهد. دامنه اصلی این تابع عبارت است از همه اعداد به‌جز حالتی که قدر مطلق از ظرفیت نوع داده عبور کند و نوع خروجی آن نوع ورودی؛ برای decimal خروجی decimal(38,s) است. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع ABS با Syntax، ده مثال، FAQ و نکات Performance

تابع ACOS؛ آرک‌کسینوس

ACOS در گروه «توابع مثلثاتی معکوس» قرار می‌گیرد. ورودی خارج از دامنه باعث خطای عملیات ممیز شناور می‌شود؛ پیش از فراخوانی دامنه را کنترل کنید. دامنه اصلی این تابع عبارت است از فقط مقادیر بازه [-1,1] و نوع خروجی آن float؛ زاویه بر حسب رادیان. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع ACOS با Syntax، ده مثال، FAQ و نکات Performance

تابع ASIN؛ آرک‌سینوس

ASIN در گروه «توابع مثلثاتی معکوس» قرار می‌گیرد. خطای گردکردن ممکن است مقدار محاسبه‌شده را اندکی از یک بزرگ‌تر کند؛ در محاسبات حساس آن را محدود کنید. دامنه اصلی این تابع عبارت است از فقط مقادیر بازه [-1,1] و نوع خروجی آن float؛ زاویه بر حسب رادیان. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع ASIN با Syntax، ده مثال، FAQ و نکات Performance

تابع ATAN؛ آرک‌تانژانت

ATAN در گروه «توابع مثلثاتی معکوس» قرار می‌گیرد. برای تعیین زاویه با دانستن هر دو مؤلفه و تشخیص ربع صحیح، ATN2 انتخاب دقیق‌تری است. دامنه اصلی این تابع عبارت است از همه اعداد حقیقی و نوع خروجی آن float؛ زاویه بر حسب رادیان. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع ATAN با Syntax، ده مثال، FAQ و نکات Performance

تابع ATN2؛ زاویه از دو مؤلفه

ATN2 در گروه «توابع مثلثاتی معکوس» قرار می‌گیرد. برخلاف ATAN، این تابع علامت هر دو مؤلفه را می‌بیند و ربع صحیح زاویه را حفظ می‌کند. دامنه اصلی این تابع عبارت است از همه زوج‌های عددی؛ زوج صفر و صفر از نظر کاربردی مبهم است و نوع خروجی آن float؛ زاویه بر حسب رادیان در بازه تقریبی -π تا π. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع ATN2 با Syntax، ده مثال، FAQ و نکات Performance

تابع CEILING؛ گرد کردن رو به بالا

CEILING در گروه «گرد کردن و علامت» قرار می‌گیرد. برای اعداد منفی، رو به بالا یعنی حرکت به سمت مثبت؛ بنابراین CEILING(-1.8) برابر -1 است. دامنه اصلی این تابع عبارت است از همه اعداد در ظرفیت نوع خروجی و نوع خروجی آن نزدیک‌ترین عدد صحیح بزرگ‌تر یا مساوی؛ نوع خروجی تابع تابعِ نوع ورودی است. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع CEILING با Syntax، ده مثال، FAQ و نکات Performance

تابع COS؛ کسینوس

COS در گروه «توابع مثلثاتی» قرار می‌گیرد. ورودی COS رادیان است؛ برای داده‌های درجه‌ای ابتدا از RADIANS استفاده کنید. دامنه اصلی این تابع عبارت است از همه اعداد حقیقی و نوع خروجی آن float در بازه تقریبی -1 تا 1. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع COS با Syntax، ده مثال، FAQ و نکات Performance

تابع COT؛ کتانژانت

COT در گروه «توابع مثلثاتی» قرار می‌گیرد. نزدیک مضرب‌های π، نتیجه ناپایدار یا بسیار بزرگ است؛ آستانه‌ای برای SIN ورودی در نظر بگیرید. دامنه اصلی این تابع عبارت است از زاویه‌هایی که SIN آن‌ها صفر نیست و نوع خروجی آن float. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع COT با Syntax، ده مثال، FAQ و نکات Performance

تابع DEGREES؛ تبدیل رادیان به درجه

DEGREES در گروه «تبدیل واحد زاویه» قرار می‌گیرد. اگر نوع ورودی integer باشد، تبدیل‌های ضمنی می‌تواند دقت را کاهش دهد؛ برای محاسبات زاویه از float یا decimal مناسب استفاده کنید. دامنه اصلی این تابع عبارت است از همه اعداد در ظرفیت نوع خروجی و نوع خروجی آن نوع عددی متناظر با ورودی؛ انتخاب نوع ورودی بر دقت اثر دارد. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع DEGREES با Syntax، ده مثال، FAQ و نکات Performance

تابع EXP؛ تابع نمایی

EXP در گروه «توان، لگاریتم و ریشه» قرار می‌گیرد. توان‌های بسیار بزرگ می‌توانند سرریز float ایجاد کنند؛ دامنه ورودی را بر اساس مسئله محدود سازید. دامنه اصلی این تابع عبارت است از اعدادی که خروجی آن‌ها در محدوده float قرار گیرد و نوع خروجی آن float. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع EXP با Syntax، ده مثال، FAQ و نکات Performance

تابع FLOOR؛ گرد کردن رو به پایین

FLOOR در گروه «گرد کردن و علامت» قرار می‌گیرد. FLOOR برای مقدار منفی به سمت منفی بی‌نهایت می‌رود و با حذف بخش اعشار یکسان نیست. دامنه اصلی این تابع عبارت است از همه اعداد در ظرفیت نوع خروجی و نوع خروجی آن بزرگ‌ترین عدد صحیح کوچک‌تر یا مساوی. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع FLOOR با Syntax، ده مثال، FAQ و نکات Performance

تابع LOG؛ لگاریتم طبیعی یا با مبنا

LOG در گروه «توان، لگاریتم و ریشه» قرار می‌گیرد. LOG در حالت تک‌پارامتری لگاریتم طبیعی است؛ آن را با LOG10 اشتباه نگیرید. دامنه اصلی این تابع عبارت است از عبارت باید مثبت باشد؛ مبنا مثبت و نابرابر با یک و نوع خروجی آن float. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع LOG با Syntax، ده مثال، FAQ و نکات Performance

تابع LOG10؛ لگاریتم مبنای ده

LOG10 در گروه «توان، لگاریتم و ریشه» قرار می‌گیرد. صفر و اعداد منفی در دامنه LOG10 نیستند؛ فیلتر یا CASE را پیش از محاسبه اعمال کنید. دامنه اصلی این تابع عبارت است از فقط اعداد بزرگ‌تر از صفر و نوع خروجی آن float. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع LOG10 با Syntax، ده مثال، FAQ و نکات Performance

تابع PI؛ ثابت عدد پی

PI در گروه «ثابت‌ها و تبدیل زاویه» قرار می‌گیرد. PI مقدار تقریبی float بازمی‌گرداند؛ برای نمایش مالی یا تعداد رقم مشخص، نتیجه را صریحاً تبدیل یا گرد کنید. دامنه اصلی این تابع عبارت است از بدون محدودیت ورودی و نوع خروجی آن float با مقدار تقریبی 3.14159265358979. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع PI با Syntax، ده مثال، FAQ و نکات Performance

تابع POWER؛ توان عدد

POWER در گروه «توان، لگاریتم و ریشه» قرار می‌گیرد. نوع پایه را آگاهانه انتخاب کنید؛ POWER(2, -1) با پایه صحیح ممکن است نتیجه‌ای متفاوت از POWER(2.0, -1) بدهد. دامنه اصلی این تابع عبارت است از بر اساس پایه، توان و ظرفیت نوع خروجی و نوع خروجی آن نوع وابسته به پایه؛ تبدیل پایه بر ظرفیت خروجی اثر مستقیم دارد. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع POWER با Syntax، ده مثال، FAQ و نکات Performance

تابع RADIANS؛ تبدیل درجه به رادیان

RADIANS در گروه «تبدیل واحد زاویه» قرار می‌گیرد. برای حفظ بخش اعشاری، ورودی را به‌صورت 180.0 یا با تبدیل صریح به float/decimal بنویسید. دامنه اصلی این تابع عبارت است از همه اعداد در ظرفیت نوع خروجی و نوع خروجی آن نوع عددی متناظر با ورودی. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع RADIANS با Syntax، ده مثال، FAQ و نکات Performance

تابع RAND؛ تولید عدد شبه‌تصادفی

RAND در گروه «تصادفی‌سازی» قرار می‌گیرد. RAND ممکن است برای همه ردیف‌های یک عبارت مقدار یکسان بدهد؛ برای تصادفی‌سازی سطری یا مرتب‌سازی، رفتار NEWID و CHECKSUM را جداگانه ارزیابی کنید. دامنه اصلی این تابع عبارت است از Seed از نوع integer و نوع خروجی آن float از صفر تا کمتر از یک. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع RAND با Syntax، ده مثال، FAQ و نکات Performance

تابع ROUND؛ گرد کردن عدد

ROUND در گروه «گرد کردن و علامت» قرار می‌گیرد. پارامتر سومِ غیرصفر عمل برش انجام می‌دهد، نه گردکردن؛ برای length منفی نیز ظرفیت decimal را کنترل کنید. دامنه اصلی این تابع عبارت است از همه اعداد در ظرفیت نوع خروجی و نوع خروجی آن نوع عددی متناظر با ورودی؛ برای decimal دقت خروجی تابع قواعد مشخصی دارد. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع ROUND با Syntax، ده مثال، FAQ و نکات Performance

تابع SIGN؛ تشخیص علامت عدد

SIGN در گروه «گرد کردن و علامت» قرار می‌گیرد. SIGN اندازه اختلاف را نشان نمی‌دهد؛ برای شدت تغییر آن را همراه ABS یا خود اختلاف ذخیره یا نمایش دهید. دامنه اصلی این تابع عبارت است از همه اعداد معتبر و نوع خروجی آن عدد -1، 0 یا 1 با نوع خروجی وابسته به ورودی. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع SIGN با Syntax، ده مثال، FAQ و نکات Performance

تابع SIN؛ سینوس

SIN در گروه «توابع مثلثاتی» قرار می‌گیرد. مقادیر بسیار نزدیک صفر ممکن است دقیقاً صفر نمایش داده نشوند؛ برای مقایسه از آستانه خطا استفاده کنید. دامنه اصلی این تابع عبارت است از همه اعداد حقیقی و نوع خروجی آن float در بازه تقریبی -1 تا 1. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع SIN با Syntax، ده مثال، FAQ و نکات Performance

تابع SQRT؛ ریشه دوم

SQRT در گروه «توان، لگاریتم و ریشه» قرار می‌گیرد. برای داده منفی، ابتدا اعتبار داده را بررسی کنید؛ ABS ممکن است خطا را پنهان کند و همیشه اصلاح درستی نیست. دامنه اصلی این تابع عبارت است از مقادیر بزرگ‌تر یا مساوی صفر و نوع خروجی آن float. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع SQRT با Syntax، ده مثال، FAQ و نکات Performance

تابع SQUARE؛ مجذور عدد

SQUARE در گروه «توان، لگاریتم و ریشه» قرار می‌گیرد. SQUARE همواره float بازمی‌گرداند؛ اگر محاسبه دقیق decimal لازم است، ضرب مستقیم با تبدیل کنترل‌شده را مقایسه کنید. دامنه اصلی این تابع عبارت است از اعدادی که مجذور آن‌ها در ظرفیت float باشد و نوع خروجی آن float. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع SQUARE با Syntax، ده مثال، FAQ و نکات Performance

تابع TAN؛ تانژانت

TAN در گروه «توابع مثلثاتی» قرار می‌گیرد. نزدیک 90 درجه نتیجه بسیار بزرگ و حساس به خطای ورودی است؛ COS زاویه را با آستانه کنترل کنید. دامنه اصلی این تابع عبارت است از همه زاویه‌ها، با ناپایداری نزدیک π/2 + kπ و نوع خروجی آن float. در طراحی حرفه‌ای، نوع داده، NULL و اثر آن در Predicate را همراه با خود فرمول بررسی کنید.

آموزش کامل تابع TAN با Syntax، ده مثال، FAQ و نکات Performance

جدول مقایسه توابع ریاضی SQL Server

تابعکاربرد اصلینوع خروجی یا نکته مهملینک آموزش کامل
ABSقدر مطلقنوع ورودی؛ برای decimal خروجی decimal(38,s) استمشاهده آموزش ABS
ACOSآرک‌کسینوسfloat؛ زاویه بر حسب رادیانمشاهده آموزش ACOS
ASINآرک‌سینوسfloat؛ زاویه بر حسب رادیانمشاهده آموزش ASIN
ATANآرک‌تانژانتfloat؛ زاویه بر حسب رادیانمشاهده آموزش ATAN
ATN2زاویه از دو مؤلفهfloat؛ زاویه بر حسب رادیان در بازه تقریبی -π تا πمشاهده آموزش ATN2
CEILINGگرد کردن رو به بالانزدیک‌ترین عدد صحیح بزرگ‌تر یا مساوی؛ نوع خروجی تابع تابعِ نوع ورودی استمشاهده آموزش CEILING
COSکسینوسfloat در بازه تقریبی -1 تا 1مشاهده آموزش COS
COTکتانژانتfloatمشاهده آموزش COT
DEGREESتبدیل رادیان به درجهنوع عددی متناظر با ورودی؛ انتخاب نوع ورودی بر دقت اثر داردمشاهده آموزش DEGREES
EXPتابع نماییfloatمشاهده آموزش EXP
FLOORگرد کردن رو به پایینبزرگ‌ترین عدد صحیح کوچک‌تر یا مساویمشاهده آموزش FLOOR
LOGلگاریتم طبیعی یا با مبناfloatمشاهده آموزش LOG
LOG10لگاریتم مبنای دهfloatمشاهده آموزش LOG10
PIثابت عدد پیfloat با مقدار تقریبی 3.14159265358979مشاهده آموزش PI
POWERتوان عددنوع وابسته به پایه؛ تبدیل پایه بر ظرفیت خروجی اثر مستقیم داردمشاهده آموزش POWER
RADIANSتبدیل درجه به رادیاننوع عددی متناظر با ورودیمشاهده آموزش RADIANS
RANDتولید عدد شبه‌تصادفیfloat از صفر تا کمتر از یکمشاهده آموزش RAND
ROUNDگرد کردن عددنوع عددی متناظر با ورودی؛ برای decimal دقت خروجی تابع قواعد مشخصی داردمشاهده آموزش ROUND
SIGNتشخیص علامت عددعدد -1، 0 یا 1 با نوع خروجی وابسته به ورودیمشاهده آموزش SIGN
SINسینوسfloat در بازه تقریبی -1 تا 1مشاهده آموزش SIN
SQRTریشه دومfloatمشاهده آموزش SQRT
SQUAREمجذور عددfloatمشاهده آموزش SQUARE
TANتانژانتfloatمشاهده آموزش TAN

شش مثال ترکیبی و کاربردی

مثال جامع شماره 1: محاسبه انحراف مطلق و جهت تغییر

این مثال چند مفهوم عددی را در یک سناریوی کوتاه و قابل اجرا کنار هم قرار می‌دهد. نوع ثابت‌ها به‌صورت اعشاری نوشته شده تا تقسیم صحیح یا حذف ناخواسته اعشار رخ ندهد.

SELECT ABS(-125.75) AS AbsoluteGap, SIGN(-125.75) AS Direction;
ستون یا وضعیتخروجی نمونه
نتیجهAbsoluteGap برابر 125.75 و Direction برابر -1

در داده واقعی، مقدارهای ورودی را اعتبارسنجی و نوع خروجی را متناسب با قرارداد گزارش یا API تبدیل کنید.

مثال جامع شماره 2: ظرفیت بسته‌بندی با CEILING

این مثال چند مفهوم عددی را در یک سناریوی کوتاه و قابل اجرا کنار هم قرار می‌دهد. نوع ثابت‌ها به‌صورت اعشاری نوشته شده تا تقسیم صحیح یا حذف ناخواسته اعشار رخ ندهد.

DECLARE @Quantity int = 250;
DECLARE @BoxCapacity int = 24;
SELECT CEILING(@Quantity / 24.0) AS RequiredBoxes;
ستون یا وضعیتخروجی نمونه
نتیجه11 کارتن

در داده واقعی، مقدارهای ورودی را اعتبارسنجی و نوع خروجی را متناسب با قرارداد گزارش یا API تبدیل کنید.

مثال جامع شماره 3: فاصله دو نقطه با SQRT و SQUARE

این مثال چند مفهوم عددی را در یک سناریوی کوتاه و قابل اجرا کنار هم قرار می‌دهد. نوع ثابت‌ها به‌صورت اعشاری نوشته شده تا تقسیم صحیح یا حذف ناخواسته اعشار رخ ندهد.

DECLARE @X1 float=0, @Y1 float=0, @X2 float=3, @Y2 float=4;
SELECT SQRT(SQUARE(@X2-@X1)+SQUARE(@Y2-@Y1)) AS Distance;
ستون یا وضعیتخروجی نمونه
نتیجهفاصله برابر 5

در داده واقعی، مقدارهای ورودی را اعتبارسنجی و نوع خروجی را متناسب با قرارداد گزارش یا API تبدیل کنید.

مثال جامع شماره 4: تبدیل درجه و محاسبه سینوس

این مثال چند مفهوم عددی را در یک سناریوی کوتاه و قابل اجرا کنار هم قرار می‌دهد. نوع ثابت‌ها به‌صورت اعشاری نوشته شده تا تقسیم صحیح یا حذف ناخواسته اعشار رخ ندهد.

SELECT RADIANS(30.0) AS AngleRad, SIN(RADIANS(30.0)) AS SinValue;
ستون یا وضعیتخروجی نمونه
نتیجهرادیان حدود 0.5236 و سینوس حدود 0.5

در داده واقعی، مقدارهای ورودی را اعتبارسنجی و نوع خروجی را متناسب با قرارداد گزارش یا API تبدیل کنید.

مثال جامع شماره 5: رشد مرکب با POWER

این مثال چند مفهوم عددی را در یک سناریوی کوتاه و قابل اجرا کنار هم قرار می‌دهد. نوع ثابت‌ها به‌صورت اعشاری نوشته شده تا تقسیم صحیح یا حذف ناخواسته اعشار رخ ندهد.

SELECT ROUND(100000.0 * POWER(1.08, 5.0), 2) AS FutureValue;
ستون یا وضعیتخروجی نمونه
نتیجهحدود 146932.81

در داده واقعی، مقدارهای ورودی را اعتبارسنجی و نوع خروجی را متناسب با قرارداد گزارش یا API تبدیل کنید.

مثال جامع شماره 6: کنترل دامنه LOG و SQRT

این مثال چند مفهوم عددی را در یک سناریوی کوتاه و قابل اجرا کنار هم قرار می‌دهد. نوع ثابت‌ها به‌صورت اعشاری نوشته شده تا تقسیم صحیح یا حذف ناخواسته اعشار رخ ندهد.

WITH V(v) AS (SELECT * FROM (VALUES(-1.0),(0.0),(4.0)) S(v))
SELECT v, CASE WHEN v>0 THEN LOG(v) END AS SafeLog,
       CASE WHEN v>=0 THEN SQRT(v) END AS SafeSqrt
FROM V;
ستون یا وضعیتخروجی نمونه
نتیجهنتیجه نامعتبر NULL و ردیف مثبت محاسبه می‌شود

در داده واقعی، مقدارهای ورودی را اعتبارسنجی و نوع خروجی را متناسب با قرارداد گزارش یا API تبدیل کنید.

خطاهای رایج در محاسبات ریاضی

  • تقسیم دو عدد صحیح و از دست رفتن بخش اعشار پیش از رسیدن مقدار به تابع.
  • ارسال درجه به SIN یا COS بدون تبدیل آن به رادیان.
  • اجرای LOG روی صفر یا عدد منفی و SQRT روی عدد منفی.
  • استفاده از ACOS و ASIN بدون محدود کردن ورودی به بازه منفی یک تا یک.
  • قرار دادن تابع روی ستون ایندکس‌شده در شرط جست‌وجو و ایجاد Scan.
  • استفاده از RAND برای اهداف امنیتی یا فرض تولید مقدار مستقل برای هر ردیف.
  • گردکردن زودهنگام در محاسبه مالی چندمرحله‌ای.

سؤالات متداول

بهترین نوع داده برای توابع ریاضی چیست؟

پاسخ به نیاز دقت وابسته است. decimal برای عدد دقیق و float برای محاسبات علمی تقریبی رایج است؛ نوع را بر اساس دامنه، ظرفیت و قرارداد خروجی انتخاب کنید.

چرا نتیجه تابع مثلثاتی دقیقاً صفر نیست؟

نمایش float تقریبی است. نتیجه‌ای بسیار کوچک نزدیک صفر طبیعی است و باید با آستانه مناسب مقایسه شود.

چگونه از خطای دامنه جلوگیری کنیم؟

TRY_CONVERT نوع را کنترل می‌کند و CASE یا WHERE دامنه را محدود می‌سازد. ردیف نامعتبر را نیز برای اصلاح کیفیت داده ثبت کنید.

آیا توابع ریاضی برای گزارش تجاری مناسب‌اند؟

بله؛ محاسبه قیمت، ظرفیت، رشد، انحراف و KPI از کاربردهای رایج است. فرمول باید با مالک کسب‌وکار تأیید و تست شود.

هزینه بهینه‌سازی محاسبات عددی به چه چیزی بستگی دارد؟

حجم داده، پیچیدگی فرمول، تعداد گزارش، کیفیت ایندکس و نیاز به ستون محاسباتی یا پردازش تجمیعی عوامل اصلی‌اند.

برای مشاوره Queryهای ریاضی چه خروجی باید دریافت کرد؟

تحلیل نوع داده، نسخه بازنویسی‌شده Query، Execution Plan مقایسه‌ای، نتایج تست مرزی و مستند فرمول خروجی‌های ارزشمند هستند.

ROUND با قالب نمایش چه تفاوتی دارد؟

ROUND خود مقدار را تغییر می‌دهد؛ قالب نمایش ممکن است فقط تعداد رقم قابل مشاهده را عوض کند.

چگونه Performance تابع را بسنجیم؟

Execution Plan واقعی، STATISTICS IO، STATISTICS TIME و آزمایش با حجم نماینده معیارهای معتبرند.

Best Practice مشترک توابع ریاضی چیست؟

نوع صریح، کنترل دامنه، حفظ دقت تا مرحله نهایی، مدیریت NULL و تست مرزی اصول مشترک‌اند.

آیا این توابع در نسخه‌های جدید SQL Server کار می‌کنند؟

توابع معرفی‌شده در نسخه‌های رایج SQL Server قابل استفاده‌اند؛ برای جزئیات نوع و سطح سازگاری، مستندات نسخه مقصد و تست هم‌نسخه Production را ملاک قرار دهید.

سؤالات مصاحبه

  1. تفاوت decimal و float در محاسبات ریاضی چیست؟
  2. چگونه Predicate تابعی را SARGable بازنویسی می‌کنید؟
  3. دامنه ACOS، ASIN، LOG و SQRT چیست؟
  4. تفاوت FLOOR، CEILING و ROUND روی اعداد منفی چیست؟
  5. چرا ATN2 برای تشخیص ربع زاویه از ATAN مناسب‌تر است؟
  6. RAND چه محدودیت‌هایی برای تولید مقدار سطری و امنیتی دارد؟

جمع‌بندی و ادامه مطالعه

انتخاب تابع ریاضی مناسب باید همراه با انتخاب نوع داده، کنترل دامنه، شناخت دقت و بررسی Execution Plan انجام شود. ۲۳ مقاله مستقل این مجموعه، Syntax و مثال‌های ویژه هر تابع را از سطح مقدماتی تا الگوی سازمانی توضیح می‌دهند.

برای ادامه، از فهرست دسترسی سریع یا جدول مقایسه استفاده کنید. هر صفحه به همین راهنمای مادر بازمی‌گردد تا مسیر مطالعه میان توابع هم‌خانواده حفظ شود.

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620