کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
SQL Server رو حرفه‌ای یاد بگیر

تو این دوره SQL Server رو از صفر تا پیشرفته یاد می‌گیری! از تراکنش‌ها و طراحی دیتابیس تا Query نویسی حرفه‌ای و پروژه‌های واقعی مثل مدیریت فروش و سیستم مالی. همه چی رو با مثال و تمرین یاد می‌گیری و یه متخصص دیتابیس می‌شی!

مشاهده بیشتر

توابع SQL

توابع SQL

توابع SQL در پایگاه داده ی ORACLE گنجانده شده (به صورت دورن ساخته و توکار در آن وجود دارند) و برای استفاده در تمامی دستورهای SQL قابل دسترس می باشند. این امکان نیز وجود دارد که شما با استفاده از PL/SQL توابع سفارشی خود را ایجاد کنید.


توابع تک سطری (single row function)

توابع تک سطری تنها یک سطر نتیجه (result row) را به ازای هر سطر از جدول یا نمایه (view) مورد پرس و جو (queried) (که از آن query گرفته شده) برمی گرداند. این دست از توابع می توانند در لیست های select، عبارت های WHERE ، START WITH ، CONNECT BY و نیز HAVING بکار گرفته شوند.


توابع عددی (number functions)

این دست از توابع، ورودی عددی (numeric input) پذیرفته و مقادیر عددی برمی گردانند. تعداد زیادی از این توابع قادرند مقادیری را برگردانند که تا 38 رقم دقت اعشار داشته باشد.
توابع عددی در موجود در ORACLE عبارتند از


  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • BITAND
  • CEIL
  • COS
  • COSH
  • EXP
  • FLOOR
  • LN
  • LOG
  • MOD
  • POWER
  • ROUND
  • (number)
  • SIGN
  • SIN
  • SINH
  • SQRT
  • TAN
  • TANH
  • TRUNC

تابع توکار ABS

ABS قدر مطلق (absolute value) عدد را برمی گرداند.
مثال زیر قدر مطلق عدد -87 را برمی گرداند.


SELECT ABS(-87) "Absolute" FROM DUAL;‎

        Absolute

        ‎----------‎

        ‎        87‎

تابع ACOS


عنوان داخلی کوچک رده 1

این تابع آرک کوسینوس عدد را برمی گرداند. ورودی ها در برد 1- تا 1 قرار می گیرند و خروجی ها در برد 0 تا pi. ورودی و خروجی هر دو به صورت رادیان نمایش داده می شوند.
مثال زیر آرک کوسینوس .3 را برمی گرداند.


SELECT ACOS(.3)"Arc_Cosine" FROM DUAL;‎

        Arc_Cosine

        ‎----------‎

        ‎1.26610367‎

مانند ACOS، در ORACLE توابعی برای محاسبه ی آرک سینوس (تابع ASIN ( و آرک تانژانت ( (ATANوجود دارد.


تابع CIEL

کم ترین یا کوچکترین عدد صحیح نزدیک به عدد ارائه شده یا را برمی گرداند.


مثال:

این مثال کوچکترین عدد صحیح نزدیک به (بزرگتر از) 3.456 را برمی گرداند.


select ciel(3.456) “Ciel” from dual;‎

        Ciel

        ‎---------‎

        ‎        4‎

تابع FLOOR

بزرگترین عدد صحیح نزدیک به عدد ارائه شده و کوچکتر از آن عدد را برمی گرداند.


مثال:

این مثال بزرگترین عدد صحیح نزدیک (به کوچکتر از) 3.456 آن را برمی گرداند.


select floor(3.456) “Floor” from dual;‎

        Floor

        ‎------------‎

        ‎        3‎

تابع COS

این تابع کوسینوس یک زاویه (بر حسب رادیان) را برمی گرداند.


مثال:

مثال زیر کوسینوس زاویه ی 60 را برمی گرداند.


select  cos(60) “Cosine” from dual;‎

تابع SIN

سینوس یک زاویه (بر حسب رادیان) را برمی گرداند.


مثال:
select  SIN(60) “Sine” from dual;‎

مثال بالا سینوس زاویه ی 60 را بازمی گرداند.


تابع TAN

تانژانت یک زاویه (بر حسب رادیان) را برمی گرداند.


مثال:

این مثال تانژانت زاویه ی 60 را برمی گرداند.


select  Tan(60) “Tangent” from dual;‎

تابع MOD

باقی مانده ی تقسیم را برمی گرداند.


مثال:

این مثال باقی مانده ی تقسیم 30 بر 4 را برمی گرداند.


Select mod(30,4) “MOD” from dual;‎

        MOD

        ‎---------‎

        ‎        2‎

تابع POWER

این تابع عددی را به توان عددی دیگر می برد.


مثال:

این مثال با استفاده از تابع POWER، 2 را به توان 3 می برد.


select  power(2,3) “Power” from dual;‎

        POWER

        ‎---------‎

        ‎        8‎

تابع EXP

عدد e را به توان دلخواه n می رساند.


مثال:

این مثال عدد e را به توان 2 برده و نتیجه را برمی گرداند.


select exp(2) “e raised to 2” from dual;‎

        E RAISED TO 2‎

        ‎-------------‎

تابع LN

لگاریتم طبیعی یک عدد را برمی گرداند.


مثال:

این مثال لگاریتم طبیعی عدد 2 را برمی گرداند.


select ln(2) from dual;‎

        LN

        ‎------------‎

تابع LOG

لگاریتم یک عدد را برمی گرداند.


مثال:

مثال زیر لگاریتم عدد 100 را برمی گرداند.


select log(10,100) from dual;‎

        LOG

        ‎---------‎

        ‎        2‎

تابع ROUND

یک فیلد عددی را به عددی با تعداد اعشار مشخص گرد می کند.
مثال زیر دو رقم اول اعشار عدد 3.4573 را به 46 گرد کرده و بقیه ی اعشار (73) را حذف می کند.


select round(3.4573,2) “Round” from dual;‎

        Round

        ‎------------‎

        ‎        3.46‎

تابع TRUNC

اعشار یک عدد را به تعداد مشخص شده قطع می کند.
مثال زیر با استفاده از تابع TRUNC اعشار عدد 3.4573 را تا دو رقم اول اعشار قطع می کند.


select round(3.4573,2) “Round” from dual;‎

        Round

        ‎------------‎

        ‎        3.45‎

تابع SQRT

این تابع جذر (ریشه ی دوم) یک عدد را برمی گرداند.


مثال:

مثال زیر ریشه ی دوم عدد 16 را برمی گرداند.


select  sqrt(16) from dual;‎

        SQRT

        ‎---------‎

        ‎        4‎

توابع کاراکتری ( (Character Functions

توابع کاراکتری روی مقادیر نوع داده های CHAR و VARCHAR عملیات انجام می دهد.


تابع LOWER

یک رشته را با حروف کوچک برگردانده و نمایش می دهد.


select LOWER(‘SAMI’) from dual;‎

        LOWER

        ‎-------------‎

        sami

تابع UPPER

یک رشته را با حروف بزرگ بازیابی کرده و نمایش می دهد.


select UPPER(‘Sami’) from dual;‎

        UPPER

        ‎------------------‎

        SAMI

INITCAP

یک رشته را درحالی که حرف اول آن با حروف بزرگ نوشته شده، بازمی گرداند.


select INITCAP(‘mohammed sami’) from dual;‎

        INITCAP

        ‎------------------‎

        Mohammed Sami

LENGTH

تعداد کاراکترهای (طول) یک رشته را بازگردانی می نماید.


select length(‘mohammed sami’) from dual;‎

        LENGTH

        ‎------------‎

        ‎        13‎

SUBSTR

از این تابع می توان برای برش تعداد معينی از کاراکترهای يک رشته (به تعداد مشخص شده) بين دو نقطه ی مشخص استفاده کرد.
مثال زیر “sam” را از رشته ی “mohammed sami” برش داده و برمی گرداند.


select substr('mohammed sami',10,3) from dual;‎

        Substr

        ‎--------‎

        Sam

تابع INSTR

این تابع بررسی می کند آیا کاراکتر مورد نظر در یک رشته معین وجود دارد یا خیر. در صورت یافت شدن کاراکتر مورد نظر، تابع INSTR اولین مکانی که کاراکتر در آن ظاهر شده را برمی گرداند و در غیر این صورت 0 را برمی گرداند.
مثال زیر بررسی می کند آیا کاراکتر “a” در رشته ی “mohammed sami” وجود دارد یا خیر.


select instr('mohammed sami','a') from dual;‎

        INSTR

        ‎--------‎

        ‎4‎

تابع REPLACE

از اين تابع برای جايگزينی يک حرف يا کلمه خاص در يک رشته و جايگزينی آن با يک مجموعه کاراکتر جديد استفاده می شود .


مثال:

Query زیر مجموعه کاراکتر “mohd” را جایگزین “mohammed” می کند.


select replace('ali mohd khan','mohd','mohammed') from dual;‎

        REPLACE

        ‎---------‎

        ali mohammed khan

تابع TRANSLATE

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


مثال:

Query مثال زیر، کاراکتر B را جایگزین کاراکتر A، C را جایگزین B، D را جایگزین C، E را جایگزین D ، .... A را جایگزین Z، b را جایگزین a، c را جایگزین b، d را جایگزین c، e را جایگزین d و در نهایت a را با z جایگزین می کند.


select ‎translate('interface','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',

        ‎      'BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza') “Encrypt” from ‎dual;‎

        Encrypt

        ‎-----------‎

        Joufsgbdf

تابع SOUNDEX

این تابع بجای خود کاراکتراها تلفظ آن ها را بررسی می کند. به عنوان مثال برخی از افراد یک اسم را با املای متفاوت می نویسند، مانند “smith”، “smyth”یا “smythe”، ولی تمامی این ها فقط یک جور تلفظ می شوند. این تابع صرف نظر از املای کلمات، آن کلماتی که دارای تلفظ یکسان هستند را برمی گرداند.


تابع RPAD

این تابع به تعداد مشخص شده، کاراکتر در سمت راست کاراکتر دیگر قرار می دهد.
Query زیر سمت راست فیلد ename را با علامت " * " پر کرده تا تعداد کل کاراکترها به 10 برسد.


select rpad(ename,'*',10) from emp;‎

        Ename

        ‎----------‎

        Smith*****‎

        John******‎

        Mohammed**‎

        Sami******‎

تابع LPAD

این تابع به تعداد مشخص شده، کاراکتر در سمت چپ کاراکتر دیگر قرار می دهد.
Query زیر سمت چپ فیلد ename را با علامت " * " پر کرده تا تعداد کل کاراکترها به 10 برسد.


select lpad(ename,'*',10) from emp;‎

        Ename

        ‎----------‎

        ‎*****Smith‎

        ‎******John‎

        ‎**Mohammed‎

        ‎******Sami‎

تابع LTRIM

فضاهای خالی ای که در سمت چپ یک رشته قرار دارد را حذف می کند.
مثال زیر فضای خالی سمت چپ رشته ی “ Interface “ را حذف کرده، سپس آن را برمی گرداند.


The following query returns string “       Interface        “ left trimmed.‎

        select ltrim('       Interface       ') from dual;‎

        Ltrim

        ‎--------------‎

        Interface ‎

تابع RTRIM

فضاهای خالی ای که در سمت راست یک رشته قرار دارد را حذف می کند.
مثال زیر فضای خالی سمت راست “ Interface “ را حذف کرده، سپس آن را برمی گرداند.


select rtrim('       Interface       ') from dual;‎

        Rtrim

        ‎------------‎

        ‎   Interface ‎

تابع TRIM

تابع trim برای حذف فضای خالی قبل و بعد از یک رشته به کار می رود.
Query زیر با استفاده از تابع مزبور 0 های رشته ی مورد نظر از سمت چپ و راست آن حذف می کند.


Select trim(0 from '00003443500') from dual;‎

        Trim

        ‎----------‎

        ‎34435‎

تابع CONCAT

یک رشته را به رشته ی دیگر متصل می کند.


مثال:
Select concat(concat(ename,' is a '),job) from emp;‎

        Concat

        ‎----------------‎

        Smith is a clerk

        John is a Manager

        Sami is a G.Manager

سایر توابع تک سطری (single-row functions)

تابع COALESCE

این تابع چندین عبارت از ورودی دریافت می کند و اولین عبارتی را که NULL نباشد را بر می گرداند .


مثال:

این مثال salary + commission را برمی گرداند. چنانچه commission، null بود، تنها salary را بازمی گرداند و اگر salary هم null بود، 1000 را برمی گرداند.


select empno,ename,salary,comm,coalesce(salary+comm,salary,1000) “Net Sal” from ‎emp;‎
NET SAL
COMM
SALARY
ENAME
1100‎
100
1000
SMITH
3000
3000
SAMI
1000‎
SCOTT
1000
200
RAVI

تابع DECODE

دستور نگارش


DECODE(expr, searchvalue1, result1,searchvalue2,result2,..., defaultvalue)‎

این تابع یک عبارت را با مقادیری که جستجو (search) برمی گرداند به صورت یک به یک مقایسه می کند. در صورتی که عبارت مربوط با هیچ یک از مقادیر بازگشتی search همخوانی و تطابق نداشته باشد، مقدار پیش فرض را بر می گرداند. اگر مقدار پیش فرض حذف گردیده باشد، null را برمی گرداند.


مثال:

این مثال اسم department ها را بر اساس پارامتر deptno برمی گرداند. اگر deptno با هیچ یک از مقادیر بازگشتی search همخوانی نداشت، مقدار “Unknown Department” را بازیابی می نماید.


select decode(deptno,10,'Sales',20,'Accounts,30,'Production,‎

        ‎          40,'R&D','Unknown Dept') As DeptName from emp;‎

        DEPTNAME

        ‎----------‎

        Sales

        Accounts

        Unknown Dept.‎

        Accounts

        Production

        Sales

        R&D

        Unknown Dept.‎

تابع GREATEST

دستور نگارش


‎    GREATEST(expr1, expr2, expr3,expr4...)‎

بزرگترین عبارت را از یک فهرست عبارت (expr list) انتخاب کرده و واکشی می کند.


select greatest(10,20,50,20,30) from dual;‎

        GREATEST

        ‎--------‎

        ‎50‎

        select greatest('SAMI','SCOTT','RAVI','SMITH','TANYA') from dual;‎

        GREATEST

        ‎--------‎

        TANYA

تابع LEAST

ساختار نگارشی


LEAST(expr1, expr2, expr3,expr4...)‎

کوچکترین عبارت را از میان عبارت های موجود در یک لیست بازگردانی می کند.


select least(10,20,50,20,30) from dual;‎

        LEAST

        ‎--------‎

        ‎10‎

        select least('SAMI','SCOTT','RAVI','SMITH','TANYA') from dual;‎

        LEAST

        ‎--------‎

        RAVI

تابع NVL

ساختار نگارشی


NVL2(expr1,expr2)‎

از این تابع اغلب برای بررسی مقادیر null استفاده می شود. در صورتی که عبارت اول (exp1) null باشد، عبارت دوم (exp2) را بازمی گرداند و در غیر این صورت عبارت اول را بارگردانی می نماید.


مثال:
Select ename,nvl(comm,'Not Applicable') “Comm” from dual;‎
COMM
ENAME
300‎
Scott
450
Tiger
Not Applicable
Sami
300
Ravi
Not Applicable
Tanya
مثال:
Select ename,nvl(comm,'Not Applicable') “Comm” from dual;‎
COMM
ENAME
300
Scott
450
Tiger
Not Applicable
Sami
300
Ravi
Not Applicable
Tanya

تابع NVL2

نحوه ی نگارش تابع


NVL2(expr1,expr2,expr3)‎

این تابع در صورتی که عبارت اول (expr1) خالی (null) باشد، عبارت دوم را بازیابی می کند و در غیر این صورت عبارت سوم را بازگردانی می نماید.


select salary,comm,nvl2(comm,salary+comm,salary) “Income” from emp;‎
INCOME
COMM
SALARY
1100‎
100
1000
2000
2000
2500
200
2300
3400
3400

تابع NULLIF

ساختار نگارشی


‎  NULLIF(expr1, expr2)‎

تابع Nullif عبارت اول را با عبارت دوم مقایسه می کند. چنانچه دو عبارت با هم برابر بودند، مقدار null را بازگردانی می کند و در غیر این صورت عبارت اول را بازمی گرداند.


مثال:

Query زیر شغل سابق آن دسته از کارکنانی که کار خود را در شرکت تغییر داده اند نشان می دهد. این کار را از طریق مقایسه ی شغل جاری کارکنان با شغل سابق آن ها در جدول oldemp انجام می دهد.


تابع UID

این تابع session ID جاری (شناسه ی session) کاربری که وارد شده (log on کرده) را برمی گرداند.


Example

        select uid from dual;‎

        UID

        ‎----‎

        ‎20‎

تابع USER

username کاربری که وارد شده را برمی گرداند.


select user from dual;‎

        USER

        ‎---------‎

        SCOTT

تابع SYS_CONTEXT

این تابع مقدار پارامتری که با فضای نام context مرتبط است را برمی گرداند. می توان این تابع را در هر دو دستورات SQL و PL/SQL بکار برد.
مثال زیر username کاربر جاری را برمی گرداند.


Select sys_context('USERENV','SESSION_USER') “Username” from dual;‎

        USERNAME

        ‎---------‎

        SCOTT

مشابه پارامتر SESSION_USER فضای نام USERENV، پارامترهای مهم و پرکاربرد دیگری نیز وجود دارند که به ترتیب زیر می باشند.


  • ISDBA : بررسی می کند آیا کاربر دارای امتیازات و مجوزهای لازم مدیر پایگاه داده (DBA) هست یا خیر.
  • HOST: اسم رایانه ی میزبان (host machine) که سرویس گیرنده (client) به آن متصل هست را برمی گرداند.
  • INSTANCE : شماره ی شناسایی (id number) سطر جاری را بازیابی می نماید.
  • IP_ADDRESS: آدرس IP (نشانی پروتکل اینترنت) رایانه ای که سرویس گیرنده به آن متصل می باشد را برمی گرداند.
  • DB_NAME : اسم پایگاه داده را همانگونه که در initialization parameter (پارامتری که مقداردهی اولیه می کند) تعریف شده، برمی گرداند.

تابع VSIZE

دستور نگارش


VSIZE(expr)‎

این تابع حجم یک عبارت را بر حسب بایت محاسبه کرده و برمی گرداند.


مثال:
select ename,vsize(ename) as Bytes from emp;‎
BYTES
ENAME
5
SCOTT
4
SAMI
4
4RAVI
5
KIRAN

توابع Aggregate

این دست از توابع تنها یک مقدار را براساس داده های یک ستون برمی گردانند. به عبارتی دیگر توابع Aggregate یک مقدار را بجای اینکه بر اساس تنها یک مقدار به ازای هر سطر بازگرداند، آن مقدار را بر مبنای گروه یا مجموعه ای از سطرها بازمی گرداند. از این توابع می توان در لیست های select و همچنین در عبارت های ORDER BY و HAVING استفاده کرد. با این وجود، این دست از توابع اغلب با عبارت های GROUP BY و در دستور SELECT بکار می روند که ORACLE با استفاده از آن ها سطرهای جدول مورد پرس و جو (Queried) یا نمایه (view) را گروه بندی می کند.
پرکاربردترین این توابع عبارتند از


تابع AVG

ساختار نگارشی


AVG( ALL /DISTINCT   expr)‎

میانگین مقادیر یک ستون (یا عبارت) را بر می گرداند.
مثال زیر با استفاده از تابع نام برده، میانگین درآمد تمامی کارکنان شرکت را برمی گرداند.


select avg(sal) “Average Salary” from emp;‎

        Average Salary

        ‎------------------------‎

        ‎2400.40‎

تابع SUM

دستور نگارش


SUM(ALL/DISTINCT   expr)‎

مجموع داده های ستون را بر می گرداند (حاصل جمع مقادیر یک عبارت را بازگردانی می نماید).
مثال زیر حاصل جمع یا مجموع درآمد تمامی کارکنان شرکت را محاسبه کرده و برمی گرداند.


select sum(sal) “Total Salary” from emp;‎

        Total Salary

        ‎------------------------‎

        ‎26500‎

تابع MAX

دستور نگارشی


MAX(ALL/DISTINCT  expr)‎

بزرگترین مقدار ستون (عبارت) را بر می گرداند.


مثال:
select max(sal) “Max Salary” from emp;‎

        Maximum Salary

        ‎------------------------‎

        ‎4500‎

تابع MIN

ساختار نگارشی


‎   MIN(ALL/DISTINCT     expr)‎

کمترین (کوچکترین) مقدار عبارت انتخابی را بر می گرداند.


مثال:

این query پایین ترین درآمد بین کارکنان شرکت را برمی گرداند.


select min(sal) “Min Salary” from emp;‎

        Minimum Salary

        ‎------------------------‎

        ‎1200‎

تابع COUNT

دستور نگارشی


 COUNT(*)      OR      COUNT(ALL/DISTINCT     expr)‎

تعداد سطرها (ستون) را در یک query بازگردانی می نماید. اگر یک عبارت مشخص کنید، count مقادیر null را نادیده می گیرد. اگر از علامت " * " در query استفاده کنید، این تابع تمامی سطرها از جمله سطرهای تکراری و خالی (null) را برمی گرداند. خود تابع count هیچگاه null برنمی گرداند.
Query زیر تعداد کارکنان را بازمی گرداند.


Select count(*) from emp;‎

        COUNT

        ‎------‎

        ‎14‎

مثال زیر تعداد کارکنانی که درآمد آن ها null نمی باشد را برمی گرداند.


Select count(sal) from emp;‎

        COUNT

        ‎------‎

        ‎12‎

تابع STDDEV

نحوه ی نگارش


STDDEV(ALL/DISTINCT   expr)‎

این تابع انحراف از معیار عبارت را برمی گرداند.
مثال زیر انحراف از معیار درآمد کارکنان را بازیابی می نماید.


select stddev(sal) from emp;‎

        Stddev

        ‎-------   ‎

        ‎1430‎

تابع VARIANCE

ساختار نگارشی


VARIANCE(ALL/DISTINCT          expr)‎

واریانس عبارت را برمی گرداند.
مثال زیر واریانس درآمد کارکنان را بازمی گرداند.


select variance(sal) from emp;‎

        Variance

        ‎-------   ‎

        ‎1430‎
1394/07/27 18767 1919
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...