با عرض سلام و خوشامد خدمت کاربران محترم سایت آموزشی پی وی لرن. و تمام علاقه مندان که دوره کامل آموزش اوراکل را دنبال می کنند. رشته ها در PL/SQL در واقع یک توالی از کاراکترها با مشخصات و اندازه اختیاری است. رشته ها در PL/SQL می توانند عددی، حروف، خالی، کاراکترهای خاص یا ترکیبی از همه باشند. PL / SQL سه نوع رشته در PL/SQL ارائه می دهد.
در چنین رشته هایی، برنامه نویس ها طول را در هنگام اعلام رشته در PL/SQL مشخص می کنند. در واقع رشته با طول ثابتش تعریف می شود.
در چنین رشته هایی، حداکثر طول ۳۲،۷۶۷، برای رشته مشخص شده است و همچنین بدون padding می باشد.
اینها رشته هایی با طول متغیر هستند که می توانند تا ۱۲۸ ترابایت باشد.
رشته ها در PL/SQL می تواند متغیر یا literal باشد. حروف رشته در داخل علامت نقل قول قرار دارد. مثلا:
1 | 'This is a string literal.' Or 'hello world' |
برای قرار دادن یک نقل قول تنها در رشته ای از حروف الفبا، شما باید دو رقم تک بعدی را کنار یکدیگر قرار دهید. مثلا:
1 | 'this isn''t what it looks like' |
پایگاه داده اوراکل انواع متعددی از داده های رشته ای مانند CHAR، NCHAR، VARCHAR2، NVARCHAR2، CLOB و NCLOB را فراهم می کند. نوع داده های پیشین با ‘N’ نوع داده های کاراکتر، ملی هستند که داده های کاراکتر Unicode را ذخیره می کنند.
اگر شما نیاز به یک رشته در PL/SQL با طول متغیر دارید، باید حداکثر طول این رشته را ارائه دهید. به عنوان مثال، نوع داده VARCHAR2.
مثال زیر نشان دهنده اعلان و استفاده از برخی متغیرهای رشته در PL/SQL است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | DECLARE name varchar2(20); company varchar2(30); introduction clob; choice char(1); BEGIN name := 'John Smith'; company := 'Infotech'; introduction := ' Hello! I''m John Smith from Infotech.'; choice := 'y'; IF choice = 'y' THEN dbms_output.put_line(name); dbms_output.put_line(company); dbms_output.put_line(introduction); END IF; END; / |
هنگامی که کد بالا در SQL ،فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 4 5 | John Smith Infotech Hello! I'm John Smith from Infotech. PL/SQL procedure successfully completed |
برای اعلام یک رشته در PL/SQL با طول ثابت، از نوع داده CHAR استفاده کنید. در اینجا شما مجبور نیستید حداکثر طول را برای یک متغیر ثابت تعیین کنید. اگر محدودیت طول را ترک کنید، پایگاه داده اوراکل به طور خودکار از حداکثر طول مورد نیاز استفاده می کند. دو اعلامیه زیر یکسان هستند.
1 2 | red_flag CHAR(1) := 'Y'; red_flag CHAR := 'Y'; |
PL / SQL عملگر پیوند (||) را برای پیوستن به دو رشته PL / SQL ارائه می دهد. جدول زیر توابع رشته ای ارائه شده توسط PL / SQL را فراهم می کند.
S.No | توابع و کاربرد آن |
۱ | ASCII(x);مقدار ASCII کاراکتر x را باز می گرداند. |
۲ | CHR(x);کاراکتر با مقدار ASCII از x را باز می گرداند. |
۳ | CONCAT(x, y);رشته x و y را به هم پیوند می دهد و رشته ی اضافه را باز می گرداند. |
۴ | INITCAP(x);حرف اول هر کلمه را در x به حروف بزرگ تبدیل می کند و آن رشته را باز می گرداند. |
۵ | INSTR(x, find_string [, start] [, occurrence]);جستجو برای find_string در x و موقعیتی را که در آن رخ می دهد را نشان می دهد. |
۶ | INSTRB(x);مکان یک رشته در رشته دیگری را برمی گرداند، اما مقدار را در بایت به نمایش می گذارد. |
۷ | LENGTH(x);تعداد کاراکترهای x را بازمیگرداند. |
۸ | LENGTHB(x);طول یک رشته کاراکتری را در بایت برای مجموعه کاراکترهای بازتابی باز می گرداند. |
۹ | LOWER(x);حروف را در x به حروف کوچک تبدیل می کند و این رشته را باز می گرداند. |
۱۰ | LPAD(x, width [, pad_string]) ;پد x با فضاهای به سمت چپ، طول کل رشته را به کاراکترهای پهن می دهد. |
۱۱ | LTRIM(x [, trim_string]);کاراکترها را از سمت چپ x مرتب کنید. |
۱۲ | NANVL(x, value);اگر x با مقدار خاصی NaN (نه یک عدد) مطابقت دارد، در غیر اینصورت x بازگشت می شود. |
۱۳ | NLS_INITCAP(x);همانند تابع INITCAP به جز اینکه می تواند از روش مرتب سازی متفاوتی مانند NLSSORT استفاده کند. |
۱۴ | NLS_LOWER(x) ;همانند تابع LOWER به جز اینکه می تواند از روش مرتب سازی متفاوتی مانند NLSSORT استفاده کند. |
۱۵ | NLS_UPPER(x);همانند تابع UPPER به جز اینکه می تواند از روش مرتب سازی متفاوتی مانند NLSSORT استفاده کند. |
۱۶ | NLSSORT(x);روش مرتب سازی کاراکترها را تغییر می دهد. باید قبل از هر عملکرد NLS مشخص شود در غیر این صورت، مرتب سازی پیش فرض استفاده می شود. |
۱۷ | NVL(x, value);اگر null x باشد مقدار بازگردانده می شود؛ در غیر این صورت، x بازگردانده می شود. |
۱۸ | NVL2(x, value1, value2);اگر null x باشد مقدار۱ بازگردانده می شود؛ اگر null x باشد، مقدار۲ بازگردانده می شود. |
۱۹ | REPLACE(x, search_string, replace_string);جستجو x برای search_string و جایگزینی آن با replace_string |
۲۰ | RPAD(x, width [, pad_string]);پد x به سمت راست |
۲۱ | RTRIM(x [, trim_string]);درست کردن x از سمت راست |
۲۲ | SOUNDEX(x) ;یک رشته حاوی نماد آوایی x را برمی گرداند. |
۲۳ | SUBSTR(x, start [, length]);substring x را باز می گرداند اگر که در موقعیت مشخص شده توسط start شروع شود. یک طول اختیاری برای زیر رشته ممکن است تامین شود. |
۲۴ | SUBSTRB(x);همانند SUBSTR به جز اینکه پارامترها در بایت ها به جای کاراکتر ها برای سیستم های کارکتر تک بایت بیان می شوند. |
۲۵ | TRIM([trim_char FROM) x);کاراکترها را از سمت چپ و راست X برطرف می کند. |
۲۶ | UPPER(x);حروف را در x به حروف بزرگ تبدیل می کند و این رشته را باز می گرداند. |
اکنون چند مثال را برای درک بهتر رشته ها در PL/SQL ذکر می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | DECLARE greetings varchar2(11) := 'hello world'; BEGIN dbms_output.put_line(UPPER(greetings)); dbms_output.put_line(LOWER(greetings)); dbms_output.put_line(INITCAP(greetings)); /* retrieve the first character in the string */ dbms_output.put_line ( SUBSTR (greetings, 1, 1)); /* retrieve the last character in the string */ dbms_output.put_line ( SUBSTR (greetings, -1, 1)); /* retrieve five characters, starting from the seventh position. */ dbms_output.put_line ( SUBSTR (greetings, 7, 5)); /* retrieve the remainder of the string, starting from the second position. */ dbms_output.put_line ( SUBSTR (greetings, 2)); /* find the location of the first "e" */ dbms_output.put_line ( INSTR (greetings, 'e')); END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 4 5 6 7 8 9 10 | HELLO WORLD hello world Hello World h d World ello World 2 PL/SQL procedure successfully completed. |
1 2 3 4 5 6 7 8 | DECLARE greetings varchar2(30) := '......Hello World.....'; BEGIN dbms_output.put_line(RTRIM(greetings,'.')); dbms_output.put_line(LTRIM(greetings, '.')); dbms_output.put_line(TRIM( '.' from greetings)); END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 4 5 | ......Hello World Hello World..... Hello World PL/SQL procedure successfully completed. |
در این پست آموزشی در مورد رشته ها در PL/SQL با هم بحث کردیم. رشته در PL/SQL انواع مختلفی دارد. رشته با طول ثابت، رشته با طول متغیر و … که در مورد هر کدام از موارد صحبت کردیم. امید واریم لذت برده باشید.