آشنایی با دستورات Replace و Truncate

677

جایگزینی در رشته

یکی از ملال آورترین سناریوهایی که ممکن است در کار با رشته، با آن مواجه شوید، مدیریت رشته ای است که دربردارنده ی کاراکترهای غیرمنتظره است. علتش می تواند از نحوه ی فرمت بندی رشته یا هر چیز دیگری نشات بگیرید. مثالی را در نظر بگیرید که در آن، شما درخواست یک شماره تلفن از کاربر را دارید. در پاسخ به درخواست، کاربر ممکن است رشته را با فرمت های مختلفی در اختیار شما قرار دهد. مثال: 000-000-0000، 0000000000، (000) 000-0000، 000.000.0000 . تمامی قالب های ذکر شده، فرمت های مجاز شماره تلفن در کانادا و آمریکا هستند، اما اگر همین رشته را در عملیات مورد استفاده قرار دهید، ممکن است نتیجه ی پیشبینی نشده دریافت کنید.
یک روش برای حل این مسئله، حذف کاراکترهای غیرمجاز یا ناخواسته از رشته ی مورد نظر می باشد. این عملیات می تواند جایگزینی برخی از کاراکترها با کاراکترهای دیگر باشد.
برای جایگزین کردن یک کاراکتر و یا زیر رشته ای از یک رشته، می توان تابعREPLACE() را صدا زد. دیگر این تابع، مقدار پارامتر FindString را در String جستجو می کند و تمام آنها را با مقدار ReplaceWith جایگزین می نماید.

REPLACE(String, FindString, ReplaceWith) RETURNS varchar;
REPLACE(String, FindString, ReplaceWith) RETURNS binary;
همان طور که در بالا نیز گفته شد، این تابع سه آرگومان می گیرد. اولین آرگومان رشته ای است به عنوان مرجع یا reference مورد استفاده قرار می گیرد. دومین آرگومان، FindString کاراکتری یا زیر رشته ای است که در آرگومان String جستجو می شود. چنانچه دومین آرگومان در رشته ی مورد نظر یافت شد، در آن صورت مقدار آرگومان سوم (ReplaceWith) جایگزین آن در رشته می شود (در جای آن رشته یا کاراکتر می نشیند).
 
Truncate

از دستور Truncate برای حذف تمامی رکورد های از یک جدول استفاده  می شود  و فضای اختصاص داده شده به دیتاهای آن جدول را آزاد می کند.

ساختار دستور Truncate به صورت زیر می باشد :

TRUNCATE TABLE table_name;

تفاوت های  دستور Truncate با دستور Delete :

دستور Delete :
این دستور در حالتی که دارای بخش where باشد  فقط رکوردهایی از جدول را حذف می کند  در غیر اینصورت  تمامی رکوردهای جدول را حذف می کند . اما فضاهای اختصاص داده شده به رکورد های اختصاص یافته آزاد نمی شود .
دستور Truncate :
از این دستور هم برای حذف تمامی رکوردهای جداول استفاده می شود با این تفاوت که بعد از حذف فضای اختصاص یافته به داده های آزاد می شود .

تفاوت اول :

آزد سازی حافظه در هنگام حذف رکوردها .

تفاوت دوم  :
بعد از  دستور Delete  می توان  از commit  یا rollback  جهت اینکه تغییرات اعمل شود و یا داده های حذف شده  را undo کنیم .

 در هنگام استفاده از  Truncate نمی توان از دستور Roll back جهت بازگرداندن تغییرات استفاده کرد




فاقد نظر