معرفی تکتک توابع و مسیر مطالعه
تابع 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
شش مثال ترکیبی و کاربردی
مثال جامع شماره 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 تبدیل کنید.
سؤالات متداول
بهترین نوع داده برای توابع ریاضی چیست؟
پاسخ به نیاز دقت وابسته است. 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 را ملاک قرار دهید.