توابع ریاضی - EXP, Log, Ln

EXP

شما می‌توانید بوسیله‌ی این تابع از فرمول e استفاده نمایید. لازم به ذکر است که، e یک عدد ثابت ریاضی می‌باشد (e = 2.71828…). این تابع عدد e را به توان x می‌رساند. به دستور زیر توجه کنید.

SELECT NUM_1, EXP(NUM_1) FROM NUMBERS;
NUM_1 EXP(NUM_1)
----- ----------
15 3269017.37
5 148.413159
51 1.44093E+22
46 9.4961E+19
28 1.4463E+12
37 1.1719E+16

ادامه مطلب...
۳۰ فروردين ۹۴ ، ۱۹:۵۹ ۳ نظر
مهدی غفاری

توابع ریاضی - Sin, Sinh, Cos, CosH, Tan, TanH

توابع  SIN , COS , TAN برای محاسبات مثلثاتی استفاده می‌شوند. این توابع اعداد را بر حسب رادیان پردازش می‌کنند. برای این توابع از جدول NUMBERS استفاده می‌کنیم:

SELECT * FROM NUMBERS;
NAME     CODE       NUM_1        NUM_2
-------- ---------- ------------ --------------
MOHAMMAD R 15 77
MAHDI F 5 79
MOHSEN G 51 78
FARZAD Q 46 66
EHSAN A 28 79
MEHRAN K 37 77

ادامه مطلب...
۳۰ فروردين ۹۴ ، ۱۹:۳۴ ۰ نظر
مهدی غفاری

توابع ریاضی - Power, ABS, SQRT, Sign, Mod

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

B A
5 -5.65
5.22 6.1
66.6 11
8 .33
-3 -10
-7 1.598

نوع داده‌های این جدول شامل موارد زیر می‌باشد.

  • فیلد A از نوع FLOAT
  • فیلد B از نوع FLOAT

ادامه مطلب...
۳۰ فروردين ۹۴ ، ۱۹:۰۶ ۰ نظر
مهدی غفاری

توابع پردازش رشته‌ - SubSTR

این تابع، قطعه‌ای از داده‌های فیلد مورد نظر را نشان می‌دهد. SUBSTR دارای سه آرگومان می‌باشد.

  • آرگومان اول: فیلد مورد نظر را جستجو می‌کند.
  • آرگومان دوم: مکان اولین کاراکتر را مشخص می‌کند.
  • آرگومان سوم: تعداد کاراکتری است، که باید انتخاب شود.

مثال۱:

به دستور زیر دقت کنید:

SELECT FAMILY, SUBSTR(FAMILY, 2, 3) FROM PERSON;

ادامه مطلب...
۳۰ فروردين ۹۴ ، ۱۸:۲۵ ۱ نظر
مهدی غفاری

توابع پردازش رشته‌ - REPLACE

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

SQL> SELECT * FROM PERSON;
NAME      FAMILY               AGE ID-PERSON 
-------- ----------- ------------- ----------
MOHAMMAD GHAFFARI 23 1
MAHDI GHAFFARI 21 2
MOHSEN GHAFFARI 19 3
FARZAD KARKHANI 26 4
EHSAN JALALI 23 5
SELECT NAME, REPLACE(NAME, 'MO', '##') FROM PERSON;

ادامه مطلب...
۳۰ فروردين ۹۴ ، ۱۷:۵۰ ۰ نظر
مهدی غفاری

توابع پردازش رشته‌ - Lower, Upper, Initcap, Trim

LOWER

این تابع رشته‌های فیلد منتخب را به حروف کوچک تبدیل می‌کند، به دستور زیر توجه کنید:

SELECT NAME, LOWER(NAME) LOW_NAME FROM T2;

نکته: منظورمون از LOW_NAME یک اسم مجازیه که برای این کوئری انتخاب کرده‌ایم تا نتایج کوئری در این فیلد نمایش داده شوند.

کوئری فوق، داده‌های فیلد NAME را تبدیل به حروف کوچک می‌کند. نتیجه‌ی کوئری بالا را در زیر ببینید:

NAME     LOW_NAME
-------- -----------
MOHAMMAD mohammad
MAHDI mahdi
MOHSEN mohsen
FARZAD farzad
EHSAN ehsan

ادامه مطلب...
۳۰ فروردين ۹۴ ، ۱۵:۵۳ ۰ نظر
مهدی غفاری

توابع پردازش رشته - CONCAT

بوسیله‌ی این تابع، می‌توان دو فیلد را به یکدیگر متصل نمود. این تابع معادل عملگر اتصال ( || ) است. حال در زیر برای شما مثالی می‌زنم:

SELECT CONCAT(ID, NAME) JAM
FROM NUMBERS;

دستور بالا فیلد ID و NAME را به یکدیگر متصل کرده و نام مستعار آن را TOTAL قرار داده‌است. نتیجه‌ی پرس‌وجو را در زیر مشاهده کنید.

JAM
----------------------
1
2 MAHDI

همانظور که گفتم این تابع معادل عملگر || است:

SELECT ID || NAME FROM HOLO;

ID||NAME
-----------------------------
1
2MAHDI
SELECT ID || NAME JAM FROM HOLOL;

JAM
-----------------------------
1
2MAHDI

نکته: در SQL SERVER‌ به جای || باید AS بذاریم، در حقیقت لهجه دیتابیس‌ها در SQL باهم فرق دارد.

۳۰ فروردين ۹۴ ، ۱۵:۲۷ ۰ نظر
مهدی غفاری

توابع پردازش رشته - CHR

این تابع کاراکتر معادل عدد را، برمی‌گرداند. برای فهمیدن اینکه هر عدد چه کاراکتری را برمی‌گرداند به جدول کدهای ASCII مراجعه کنید(یا در یک ادیتور متن کلید ALT را نگه‌داشته و عدد مورنظر را تایپ کنید)

SELELCT * FROM HOLO;
ID NAME
------- ----------
1
2 MAHDI

در حقیقت SELECT‌ زیر به CHR میگه که ID ها کد ASCII هستند و CHR کاراکتر معادل اعداد رو برمی‌گردونه:

SELECT CHR(ID) FROM HOLO;

CHR(
----

۳۰ فروردين ۹۴ ، ۱۵:۱۰ ۰ نظر
مهدی غفاری

عملگر IS Null و IS NOT NULL

توجه داشته باشید بسیاری از کاربران مقدار NULL را با فضای خالی Space)، 0) و یا کلمه NULL (به صورت رشته ای) اشتباه می‌گیرند، در واقع در بانک اطلاعاتی به مقدار فیلدی NULL گفته می‌شود که در هنگام وارد کردن رکورد‌ها مقدار آن فیلد توسط کاربر خالی رها شود. برای مثال از جدول PERSON استفاده می‌کنیم.

نکته: برای پیدا کردن فیلدهای NULL در دیتابیس باید به طور مشخص از دستور IS NULL استفاده می‌شود.

CREATE TABLE HOLO(ID NUMBER, NAME VARCHAR2(20));
INSERT INTO HOLO VALUES(1, NULL);
INSERT INTO HOLO VALUES(2, 'MAHDI');
SELECT * FROM HOLO WHERE NAME IS NULL;
ID        NAME
--------- ---------------
1

IS NOT NULL

عملگر NOT، می‌تواند با IS NULL همراه گردد. دستور IS NOT NULL بر عکس دستور IS NULL عمل می‌کند، و داده‌هایی را به شما نشان می‌دهد که مقدار آن‌ها NULL نباشد. به مثال زیر توجه کنید.

SELECT * FROM HOLO WHERE NAME IS NOT NULL;
ID             NAME
-------------- --------
2 MAHDI

نکته: کوئری‌هایی مانند زیر در دیتابیس اوراکل اشتباه‌اند:

SELECT * FROM HOLO WHERER NAME = NULL;
۳۰ فروردين ۹۴ ، ۱۴:۰۰ ۰ نظر
مهدی غفاری

رفع مشکل استفاده از توابع گروهی

در مورد توابعی مانند تابع soundex چون به ازای هر رکورد یک result برمی‌گردونند پس نوشتن کوئری‌هایی مانند زیر مشکلی ندارد:

SELECT SOUNDEX(NAME), NAME FROM T2;
SOUN NAME
----- ------------
A256 MOHAMMAD
J130 MAHDI
S500 MOHSEN
C540 FARZAD
A400 EHSAN

ولی در مورد تابع‌های تک RESULT ای مثل SUM مشکلاتی ایجاد می‌شود.

ادامه مطلب...
۳۰ فروردين ۹۴ ، ۱۳:۱۴ ۰ نظر
مهدی غفاری