در حال بارگزاری ...

کار با رشته ها در پایگاه داده MySQL

توسط مریم مهربان
آخرین به روز رسانی شنبه 16 آذر 1398

MySQL توابع متفاوتی برای کار با رشته‌ها ارائه می‌کند که در ادامه این مقاله در لیداوب، تعدادی از آن‌ها را با هم مرور می‌کنیم. کار با رشته ها در پایگاه داده MySQL توابع lower و u

MySQL توابع متفاوتی برای کار با رشته‌ها ارائه می‌کند که در ادامه این مقاله در لیداوب، تعدادی از آن‌ها را با هم مرور می‌کنیم.


کار با رشته ها در پایگاه داده MySQL

توابع lower و upper

می‌توانیم در پرس و جوهای خود از پایگاه داده درخواست کنیم که خروجی‌های از نوع رشته را با حروف بزرگ (UpperCase) یا با حروف کوچک (LowerCase) نمایش دهد.

mysql> select lower(first_name), upper(first_name) from friends;

+-------------------+-------------------+

| lower(first_name) | upper(first_name) |

+-------------------+-------------------+

| brenda            | BRENDA            |

| dave              | DAVE              |

| emmet             | EMMET             |

| frankie           | FRANKIE           |

| jack              | JACK              |

| jacob             | JACOB             |

| jim               | JIM               |

| mary              | MARY              |

| sheila            | SHEILA            |

| sofia             | SOFIA             |

+-------------------+-------------------+

10 rows in set (0.04 sec)

تکرار رشته ها 

تابع repeate دو پارامتر دریافت می‌کند که اولین آن، رشته‌ای است که قصد دارید آن را تکرار کنید و دومین پارامتر، تعداد تکرار است. برای مثال، در پرس و جوی زیر رشته "!ohyeah" سه بار تکرار می‌شود.

mysql> select repeat('ohyeah! ', 3);
ohyeah! ohyeah! ohyeah! 
1 row in set (0.04 sec) 

mysql> select repeat(first_name, 4) from friends;
BrendaBrendaBrendaBrenda     
DaveDaveDaveDave          
EmmetEmmetEmmetEmmet     
FrankieFrankieFrankieFrankie 
JackJackJackJack  
JacobJacobJacobJacob  
JimJimJimJim   
MaryMaryMaryMary  
SheilaSheilaSheilaSheila 
SofiaSofiaSofiaSofia    
10 rows in set (0.00 sec)

جایگزینی داده خروجی

در MySQL می‌توان یک رشته را با رشته‌ای دیگر جایگزین کرد. این کار شبیه به تابع str_replcae در PHP کار می‌کند. برای مثال، می‌توان در نام کوچک افراد، حرف "a" را با رشته "BOO" جایگزین کرد. البته دقت کنید که این کار داده‌های درون پایگاه داده را تغییر نمی‌دهد بلکه فقط خروجی که به شما نمایش داده می‌شود، تغییر می‌کند.

mysql> select replace(first_name, 'a', 'BOO') from friends;
+---------------------------------+
| replace(first_name, 'a', 'BOO') |
+---------------------------------+
| BrendBOO                        |
| DBOOve                          |
| Emmet                           |
| FrBOOnkie                       |
| JBOOck                          |
| JBOOcob                         |
| Jim                             |
| MBOOry                          |
| SheilBOO                        |
| SofiBOO                         |
+---------------------------------+
10 rows in set (0.00 sec)

mysql> select * from friends;
+------------+------------+------------+------------+----------+
| first_name | last_name  | cell_phone | birthday   | house_id |
+------------+------------+------------+------------+----------+
| Brenda     | Penblanc   | 719-4521   | 1970-02-15 |        5 |
| Dave       | Chappelle  | 977-5555   | 1973-08-24 |        4 |
| Emmet      | Brickowski | 987-1244   | 2013-07-15 |        3 |
| Frankie    | Farmington | 978-1235   | 1977-04-17 |        6 |
| Jack       | Penblanc   | 581-1841   | 1967-04-23 |        5 |
| Jacob      | Olivio     | 512-3411   | 1972-10-01 |        7 |
| Jim        | Jones      | 423-1423   | 1985-07-24 |        1 |
| Mary       | Olivio     | 412-9823   | 1972-11-11 |        7 |
| Sheila     | Farmington | 591-8522   | 1977-07-12 |        6 |
| Sofia      | Vergara    | 487-4612   | 1972-07-10 |        2 |
+------------+------------+------------+------------+----------+
10 rows in set (0.00 sec)

برعکس کردن داده

با استفاده از تابع reverse()، می‌توانید به سادگی خروجی پرس و جو را وارونه کنید. برای مثال، در پرس و جوی زیر اسامی افراد را بازیابی کردیم و حروف آن‌ها را برعکس کردیم:

mysql> select reverse(first_name) from friends;
+---------------------+
| reverse(first_name) |
+---------------------+
| adnerB              |
| evaD                |
| temmE               |
| eiknarF             |
| kcaJ                |
| bocaJ               |
| miJ                 |
| yraM                |
| aliehS              |
| aifoS               |
+---------------------+
10 rows in set (0.00 sec)

چسباندن رشته

چسباندن رشته‌ها، راهی است که با آن می‌توان رشته‌ها را با هم ترکیب کرد. برای این کار، می‌توان از تابع concat استفاده کرد. این تابع، حداقل دو پارامتر رشته‌ای را دریافت می‌کند و آن‌ها را به همان ترتیب به هم می‌چسباند.

mysql> select concat(first_name, ' ', last_name) from friends where last_name='Olivio';
+------------------------------------+
| concat(first_name, ' ', last_name) |
+------------------------------------+
| Jacob Olivio                       |
| Mary Olivio                        |
+------------------------------------+
2 rows in set (0.04 sec)

تابع دیگری که برای چسباندن رشته‌ها به یکدیگر قابل استفاده است، concat_ws است که ابتدا کاراکتر جداکننده رشته‌ها را دریافت می‌کند و سپس هر تعداد رشته را که قصد داریم به هم بچسبانیم، به تابع ارسال می‌کنیم. در پرس و جوی زیر، رشته جداکننده "@@@@@" برای جدا کردن نام کوچک، نام خانوادگی، شماره تلفن و شناسه خانه استفاده شده است.

 

mysql> select concat_ws(' @@@@@ ', first_name, last_name, cell_phone, house_id) from friends;
+-------------------------------------------------------------------+
| concat_ws(' @@@@@ ', first_name, last_name, cell_phone, house_id) |
+-------------------------------------------------------------------+
| Brenda @@@@@ Penblanc @@@@@ 719-4521 @@@@@ 5                      |
| Dave @@@@@ Chappelle @@@@@ 977-5555 @@@@@ 4                       |
| Emmet @@@@@ Brickowski @@@@@ 987-1244 @@@@@ 3                     |
| Frankie @@@@@ Farmington @@@@@ 978-1235 @@@@@ 6                   |
| Jack @@@@@ Penblanc @@@@@ 581-1841 @@@@@ 5                        |
| Jacob @@@@@ Olivio @@@@@ 512-3411 @@@@@ 7                         |
| Jim @@@@@ Jones @@@@@ 423-1423 @@@@@ 1                            |
| Mary @@@@@ Olivio @@@@@ 412-9823 @@@@@ 7                          |
| Sheila @@@@@ Farmington @@@@@ 591-8522 @@@@@ 6                    |
| Sofia @@@@@ Vergara @@@@@ 487-4612 @@@@@ 2                        |
+-------------------------------------------------------------------+
10 rows in set (0.00 sec)

دریافت بخش های اول و آخر یک رشته

در MySQL، برای دریافت بخش‌های اول و آخر یک رشته از توابع left() و right() استفاده می‌شود. این توابع نام ستون را به عنوان ورودی اول دریافت می‌کند و تعداد کاراکترهای خروجی را به عنوان پارامتر دوم. برای مثال، در پرس و جوی زیر 5 کاراکتر اول آدرس از سمت چپ و 7 کاراکتر اول آدرس ازسمت راست را در خروجی مشاهده می‌کنید.

mysql> select left(address, 5), right(address, 7) from houses;
+------------------+-------------------+
| left(address, 5) | right(address, 7) |
+------------------+-------------------+
| 12 Du            | ston MA           |
| 54 Ma            | nway NH           |
| 742 A            | isco CA           |
| 836 S            | tham MA           |
| 87 Hi            | ando FL           |
| 88 Bu            | towe VT           |
| 92 Bu            | nver CO           |
+------------------+-------------------+
7 rows in set (0.00 sec)

بازگرداندن طول رشته

با استفاده از تابع length()، می‌توان طول رشته را به دست آورد. برای مثال، در پرس و جوی زیر طول رشته نام کوچک و همچنین طول رشته نام خانوادگی را با استفاده از همین تابع به دست می‌آوریم.

mysql> select length(first_name), length(last_name) from friends;
+--------------------+-------------------+
| length(first_name) | length(last_name) |
+--------------------+-------------------+
|                  6 |                 8 |
|                  4 |                 9 |
|                  5 |                10 |
|                  7 |                10 |
|                  4 |                 8 |
|                  5 |                 6 |
|                  3 |                 5 |
|                  4 |                 6 |
|                  6 |                10 |
|                  5 |                 7 |
+--------------------+-------------------+
10 rows in set (0.00 sec)

mysql> select * from friends;
+------------+------------+------------+------------+----------+
| first_name | last_name  | cell_phone | birthday   | house_id |
+------------+------------+------------+------------+----------+
| Brenda     | Penblanc   | 719-4521   | 1970-02-15 |        5 |
| Dave       | Chappelle  | 977-5555   | 1973-08-24 |        4 |
| Emmet      | Brickowski | 987-1244   | 2013-07-15 |        3 |
| Frankie    | Farmington | 978-1235   | 1977-04-17 |        6 |
| Jack       | Penblanc   | 581-1841   | 1967-04-23 |        5 |
| Jacob      | Olivio     | 512-3411   | 1972-10-01 |        7 |
| Jim        | Jones      | 423-1423   | 1985-07-24 |        1 |
| Mary       | Olivio     | 412-9823   | 1972-11-11 |        7 |
| Sheila     | Farmington | 591-8522   | 1977-07-12 |        6 |
| Sofia      | Vergara    | 487-4612   | 1972-07-10 |        2 |
+------------+------------+------------+------------+----------+
10 rows in set (0.00 sec)

دوره‌های آموزش طراحی سایت در لیداوب:

آموزش پایه لاراول

آموزش CSS

آموزش HTML مقدماتی

همانطور که مشاهده کردید، توابع متفاوتی برای کار با رشته‌ها وجود دارد و یکی از مزیت‌های این توابع این است که به صورت پیش‌فرض داده‌های درون پایگاه داده را تغییر نمی‌دهد بلکه فقط خروجی را مطابق نیاز شما تغییر می‌دهد. امیدوارم از این آموزش هم بهره برده باشید و تکرار و تمرین را برای مسلط شدن بر دانش خود فراموش نکنید. با ما در لیداوب همراه باشید.

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
ثبت امتیاز
1.5 (2 رای)

   لطفا صبر کنید ...