SQL Server Training with AdventureWorks Sample Database

آموزش گام‌به‌گام SQL Server با دیتابیس نمونه‌ی AdventureWorks | از مبتدی تا پیشرفته | (قسمت ۷)


درس ۷: توابع متنی، عددی و تاریخ در SQL Server

🎯 هدف درس:

در این درس با توابع داخلی SQL Server برای کار با رشته‌ها، اعداد و تاریخ‌ها آشنا می‌شوید. این توابع ابزارهای بسیار مفیدی هستند که برای پردازش داده‌ها، گزارش‌سازی و تبدیل مقادیر به‌کار می‌روند.

📘 مفهوم نظری:

SQL Server مجموعه‌ای از توابع آماده در اختیار دارد که به سه گروه اصلی تقسیم می‌شوند: توابع متنی (String Functions)، توابع عددی (Numeric Functions) و توابع تاریخ و زمان (Date Functions).

توابع متنی (String Functions)

۱. LEN — طول رشته را برمی‌گرداند.

SELECT LEN('SQL Server') AS LengthResult;

۲. UPPER / LOWER — تبدیل حروف به بزرگ یا کوچک.

SELECT UPPER(FirstName), LOWER(LastName)
FROM Person.Person;

۳. SUBSTRING — استخراج بخشی از رشته.

SELECT SUBSTRING(FirstName, 1, 3) AS ShortName
FROM Person.Person;

۴. CONCAT — ترکیب رشته‌ها.

SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Person.Person;

۵. REPLACE — جایگزینی بخشی از متن.

SELECT REPLACE(Name, 'Road', 'Rd') AS ShortName
FROM Person.Address;

۶. CHARINDEX — یافتن محل کاراکتر یا عبارت.

SELECT CHARINDEX('A', FirstName) AS Position
FROM Person.Person;

۷. LTRIM / RTRIM — حذف فاصله‌های ابتدا و انتهای رشته.

SELECT LTRIM(RTRIM('   SQL   ')) AS Trimmed;

توابع عددی (Numeric Functions)

۱. ROUND — گرد کردن عدد تا رقم دلخواه.

SELECT ROUND(123.4567, 2) AS RoundedNumber;

۲. CEILING / FLOOR — گرد کردن به بالا یا پایین‌ترین عدد صحیح.

SELECT CEILING(12.3), FLOOR(12.9);

۳. ABS — قدرمطلق عدد.

SELECT ABS(-45) AS AbsoluteValue;

۴. POWER — توان عدد.

SELECT POWER(5, 3) AS Result;

۵. SQRT — ریشه دوم.

SELECT SQRT(81) AS SquareRoot;

توابع تاریخ و زمان (Date Functions)

۱. GETDATE — تاریخ و زمان فعلی سرور.

SELECT GETDATE() AS CurrentDateTime;

۲. DATEPART — استخراج بخشی از تاریخ (سال، ماه، روز…).

SELECT DATEPART(YEAR, GETDATE()) AS CurrentYear,
       DATEPART(MONTH, GETDATE()) AS CurrentMonth;

۳. DATEDIFF — اختلاف بین دو تاریخ.

SELECT DATEDIFF(DAY, '2024-01-01', GETDATE()) AS DaysPassed;

۴. DATEADD — افزودن مقدار زمانی به تاریخ.

SELECT DATEADD(DAY, 10, GETDATE()) AS Next10Days;

۵. FORMAT — نمایش تاریخ در قالب دلخواه.

SELECT FORMAT(GETDATE(), 'yyyy/MM/dd - HH:mm') AS FormattedDate;

🧠 تمرین‌های عملی:

  • تمرین ۱: نمایش نام کامل افراد با استفاده از CONCAT.
  • تمرین ۲: نمایش اولین سه حرف از نام هر فرد با SUBSTRING.
  • تمرین ۳: محاسبه اختلاف روز بین تاریخ فعلی و ۱ فروردین ۱۴۰۳.
  • تمرین ۴: گرد کردن قیمت محصولات به نزدیک‌ترین عدد صحیح.
  • تمرین ۵ (چالشی): نمایش تاریخ فعلی به‌صورت فرمت “yyyy-MM-dd HH:mm” و افزودن ۳۰ روز آینده.

💡 پاسخ تمرین‌های عملی:

-- تمرین ۱
SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Person.Person;

-- تمرین ۲
SELECT SUBSTRING(FirstName, 1, 3) AS ShortName
FROM Person.Person;

-- تمرین ۳
SELECT DATEDIFF(DAY, '2024-03-20', GETDATE()) AS DaysPassed;

-- تمرین ۴
SELECT Name, ROUND(ListPrice, 0) AS RoundedPrice
FROM Production.Product;

-- تمرین ۵ (چالشی)
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm') AS NowDate,
       FORMAT(DATEADD(DAY, 30, GETDATE()), 'yyyy-MM-dd HH:mm') AS Plus30Days;

📚 جمع‌بندی درس:

در این درس با مهم‌ترین توابع متنی، عددی و زمانی SQL Server آشنا شدید. این توابع ابزار قدرتمندی برای تحلیل داده‌ها، ساخت گزارش‌ها و پردازش مقادیر هستند. در درس بعدی یاد می‌گیرید چگونه Viewها را برای ساده‌سازی کوئری‌ها و ایجاد ساختارهای مجازی داده ایجاد و استفاده کنید.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *