آموزش گامبهگام 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ها را برای سادهسازی کوئریها و ایجاد ساختارهای مجازی داده ایجاد و استفاده کنید.




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