یکی از ملال آورترین سناریوهایی که ممکن است در کار با رشته، با آن مواجه شوید، مدیریت رشته ای است که دربردارنده ی کاراکترهای غیرمنتظره است. علتش می تواند از نحوه ی فرمت بندی رشته یا هر چیز دیگری نشات بگیرید. مثالی را در نظر بگیرید که در آن، شما درخواست یک شماره تلفن از کاربر را دارید. در پاسخ به درخواست، کاربر ممکن است رشته را با فرمت های مختلفی در اختیار شما قرار دهد. مثال: 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 جهت بازگرداندن تغییرات استفاده کرد