قبل از اینکه این موضوع را بررسی کنیم باید با دستور Truncate و Delete آشنا شویم.بررسی دستور Delete :
همانگونه که میدانیم از این دستور برای
حذف رکوردها استفاده میکنند. با اجرای دستور Delete به راحتی میتوانید
تعدادی از رکوردهای یک جدول را حذف کنید. سادهترین شکل استفاده از دستور
Delete به صورت زیر میباشد.DELETE FROM table_name
WHERE some_column=some_value
برای مثال در صورتیکه بخواهیم مشتریانی را حذف کنیم ک ...
در این بخش فانکشن دیگری از توابع تحلیلی به نام CUME_DIST را بررسی مینماییم. CUME_DIST: بوسیله تابع CUME_DIST میتوان ارزیابی نمود، در یک گروه، چه درصد از مقادیر،مساوی یا کوچکتر از مقدار سطر جاری میباشند، به این تابع cumulative distribution نیز گفته میشود. Syntax تابع CUME_DIST به صورت زیر است:CUME_DIST( )
OVER ( [ partition_by_clause ] order_by_clause )
...
syntax کامل LIKE:
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
چهار کاراکتر وجود دارد که الگوهای جستجو را توسط آنها تعریف میکنند. این کاراکترها wildcard نام دارند.
زمانی که کاراکترهای wildcard موجود در الگوی ما به عنوان کاراکترهای عادی در نظر گرفته شده اند نه wildcard آنگاه باید به SQL اطلاع دهیم که آنها را با کاراکترهای wildcard اشتباه نگیرد، برای این منظور چندین راه حل وجود دارد که در ادامه شرح خواهم داد.
فرض کن ...
شاید برایتان تا حالا پیش آمده باشد که بخواهید یکسری کاراکترهای ناخواسته و اضافه را از یک رشته حذف کنید. بطور مثال تمام کاراکتر هایی غیر عددی را باید از یک رشته حذف نمود تا آن رشته قابلیت تبدیل به نوع integer را بدست بیاورد.
اگر تعداد کاراکترهای ناخواسته محدود و مشخص هستند میتوانید با دستور REPLACE آنها را حذف کنید، مثلا میخواهیم هر سه کاراکتر ~!@ از رشته حذف شوند:
DECLARE @s VARCHAR(50) = '~~~~~~!@@@@@@@ salam';
SET @s = REPLACE(REPLA ...
فرض کنید میخواهیم سطرهای جدول را 6 تا 6 تا سوا کنیم و به هر کدام یک عددی انتساب دهیم و هر قسم تولید شده را نیز 2 تا 2 تا سوا کنیم و بهش عدد انتساب دهیم.
به تصویر زیر توجه بفرمایید. ابتدا دادهها به دو دسته ششتایی تقسیم شدن(ستون ntl)، سپس هر کدام از این دستهها نیز به سه دسته دوتایی تقسیم شدن(ستون grp) هدف ما تولید دو ستون ntl و grp توسط query میباشد.
برای بدست آوردن مقادیر دو ستون مذکور روشهای متنوعی وجود دارد که برخی از آنها را در ان ...
برای پردازش یک عبارت در بسیاری از موارد نیاز هست که عبارت به کلمات تشکیل دهنده اش تجزیه شود. روشهای متنوعی برای انجام این عمل وجود دارد که یکی از شناخته شدهترین آنها استفاده از جدول اعداد میباشد (البته از بین روشهای مجموعه گرا/set -based).
روشهایی که قرار هست در ادامه توضیح داده شوند بر اساس کوئری بازگشتی میباشند. الگوریتمهای متنوعی بر اساس recursive CTE برای حل این مساله خلق شده اند. که من تنها به دو روش آن اکتفا میکنم.
Recursive ...
گاهی در راه حلهایمان نیاز داریم که تعداد تکرار یک کلمه در یک رشته را بدست آوریم. مثلا در عبارت "محمد محمد علی محمد محمد علی رضا جواد" کلمه محمد 4 بار تکرار شده و کلمه علی 2 دفعه. هدف ما پیدا کردن این اعداد هست.
برای بدست آوردن تعداد تکرار یک کلمه در یک رشته مراحل زیر را طی کنید:
1- اگر در رشته بین کلمات تنها یک فاصله بود آن را به دو فاصله تبدیل کنید.
2- اگر ابتدا و انتهای رشته فاصله وجود نداشت فاصله اضافه کنید.
3- طول رشته بعد از حذف کلم ...
به همراه بسته Features pack اس کیوال سرور 2012، دو بسته SqlDom.msi نیز وجود دارند (نسخههای X86 و X64). این بسته حاوی اسمبلی Microsoft.SqlServer.TransactSql.ScriptDom.dll میباشد که نهایتا در آدرس Program Files\Microsoft SQL Server\110\SDK\Assemblies کپی خواهد شد.
به کمک آن میتوان عبارات پیچیده T-SQL را Parse و آنالیز کرد. البته باید در نظر داشت هرچند این بسته جهت SQL Server 2012 ارائه شده اما این اسمبلی با نگارشهای 2005 به بعد ...
برای مطالعه این بخش لازم است، به Syntax مربوط به Over آشنا باشیم، در بخش اول بطور کامل به Syntax مربوط به Over پرداختیم.در این بخش دو فانکشن دیگر از توابع تحلیلی (Analytic functions) به نامهای First_Value و Last_Value را بررسی مینماییم.
First_Value
این فانکشن نیز همانند دیگر فانکشنهای تحلیلی در نسخه SQL Server 2012 ارائه گردیده است. و اولین مقدار از ی ...