SQL

تابع SUBSTRING در SQL

در یکی از پروژه‏هایی که دارم رویش کار می‏کنم، مسیرهای موجود در بانک اطلاعاتی در یکی از جداول به صورت files/images/image1.jpg بود. اما به خاطر یک سری تغییر در فایلها، می‏خواستم مسیرها به صورت images/image1.jpg در بیاید و قسمت files/ حذف بشود.
در SQL توابع زیادی برای کار کردن با رشته‏ها داریم. یکی از این توابع SUBSTR است که همان کار توابع SUBSTR در PHP و C را انجام می‏دهد و بخشی از یک رشته را جدا می‏کند. اگر چه گفتنی است که تابع دیگری هم به نام SUBSTRING هست که در واقع نام دیگری برای همین تابع است (کی می‏دونه؟ شاید هم این نام دیگری برای آن یکی است (: )

Syntax کلی تابع SUBSTR:

SUBSTRING(str,pos), SUBSTRING(str  FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str  FROM pos FOR len)

خوب من با یک Update ساده تمام مسیرها را به سادگی عوض کردم:

UPDATE FROM files SET filepath=SUBSTR(filepath, 6)

به همین سادگی! در این SQL برای این که انتهای رشته مشخص نبود من حالت اول را به کار گرفتم تا MySQL خودش تا آخر رشته را برای من جدا کند.

توابع دیگر کار کردن با رشته‏ها را اینجا ببینید. از توابعی که خیلی جالب هستند و فکر می‏کنم فقط در MySQL هست و مثلا SQL Server همچین تابعی را به این صورت ندارد، LOAD_File است که به شما اجازه می‏دهد یک فایل را از دیسک بارگزاری کنید. تابع جالب توجه دیگر هم REPLACE است.

Syndicate content