روش‌های هوشمندانه برای استفاده از  "تلفیق" در SQL
1397/12/21 17:43 , میلاد صاحب نظر

روش‌های هوشمندانه برای استفاده از "تلفیق" در SQL

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

تلفیق به چه معنا است؟

تلفیق یعنی متصل کردن دو چیز به یکدیگر. احتمالا از این ویژگی در زبان‌های برنامه‌نویسی برای متصل کردن دو رشته به یکدیگر استفاده کرده‌اید. شاید دو متغیر نام کوچک و نام خانوادگی داشته باشید که لازم باشد آن‌ها را به شکل یک متغیر نام کامل به هم متصل کنید.

تلفیق یک روش بسیار مفید برای ترکیب دو رشته و تبدیل آن‌ها به یک رشته است. PHP از یک قطعه کد مجزا و کامل برای اتصال دو رشته به یکدیگر استفاده می‌کند، در حالی که جاوا اسکریپت و jQuery فقط از یک علامت + استفاده می‌کنند.

تلفیق در SQL نیز دقیقا به همین صورت عمل می‌کند. از یک عملگر خاص برای اتصال دو چیز به یکدیگر استفاده می‌شود. در زیر یک مثال Pseudocode مشاهده می‌کنید:   

first_name = Joe

 last_name = Coburn

whole_name = first_name + last_name

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

اگرچه متغیرها در SQL خیلی به ندرت مورد استفاده قرار می‌گیرند(ولی به آن‌ها نیاز است)، به هر حال تلفیق هنوز هم برای بازگرداندن نتایج ترکیبی یا دستکاری داده‌ها مورد نیاز است.

نحوه تلفیق

تلفیق در SQL بسیار ساده است. اگرچه SQL یک زبان مرسوم است، اما موتورهای دیتابیس مجزا از ویژگی‌های مرسوم به روش‌های مختلف استفاده می‌کنند. اگرچه همه این مثال‌ها با روش مرسوم کد نویسی SQL نوشته شده‌اند، اما ترجمه آن‌ها به هر نوع متفاوت از کد نویسی در محیط‌های مختلف خیلی آسان است.

کافی است در اینترنت عبارت "تلفیق <موتور دیتابیس مورد استفاده شما>" را جستجو کنید. موتورهای مختلف ممکن است طرز نحو و کد نویسی متفاوتی برای تلفیق داشته باشند، اما اصول کار همیشه یکسان است.

به سراغ مثال نام خودمان باز‌می‌گردیم، یک کوئری select ساده به این شکل را در نظر بگیرید:

هیچ چیز پیچیده‌ای در اینجا وجود ندارد، پس اجازه دهید تلفیق را انجام دهیم:

همان‌طور که می‌بینید، تلفیق خیلی عالی عمل کرد، اما یک مشکل کوچک وجود دارد. نام کامل به وجود آمده به گونه‌ای تشکیل شده است که کاملا مشخص است حاصل تلفیق دو ستون جداگانه است – باید فاصله‌ای بین این دو نام وجود داشته باشد!

خوشبختانه، برطرف کردن این مشکل نیز آسان است: خیلی ساده، یک فضای خالی بین کد تلفیق این دو اضافه کنید:

این‌ها مثال‌های ساده‌ای هستند، اما باید ابتدا متوجه شوید که تلفیق چگونه عمل می‌کند – واقعا به همین سادگی است! عملگر خط(|) دو بار بین عبارت‌ها استفاده شده است. موتور SQL شما می‌داند که هر بخش موجود در قبل و بعد از این نماد باید با همدیگر تلفیق شوند و به نتیجه به صورت یک اسم کامل حاصل شود.

اما مراقب باشید، اگر از عملگر تلفیق استفاده کنید، اما هیچ چیز را با یکدیگر تلفیق نکنید، سیستم به شما ارور خواهد داد.

روش‌های هوشمندانه برای استفاده از یک رشته تلفیقی SQL زبان ساختارمند(SQL) یک ابزار فوق‌العاده قدرتمند و همچنین زبانی است که ویژگی‌های بسیار کامل و عالی‌ای دارد. وقتی توانستید بر اکثر دستورات مهم SQL تسلط یابید، می‌توانید کمی در کد نویسی SQL خلاقیت به خرج دهید. امروز هر چیزی که لازم است در مورد رشته‌های تلفیقی SQL بدانید به شما خواهم گفت. تلفیق به چه معنا است؟ تلفیق یعنی متصل کردن دو چیز به یکدیگر. احتمالا از این ویژگی در زبان‌های برنامه‌نویسی برای متصل کردن دو رشته به یکدیگر استفاده کرده‌اید. شاید دو متغیر نام کوچک و نام خانوادگی داشته باشید که لازم باشد آن‌ها را به شکل یک متغیر نام کامل به هم متصل کنید. تلفیق یک روش بسیار مفید برای ترکیب دو رشته و تبدیل آن‌ها به یک رشته است. PHP از یک قطعه کد مجزا و کامل برای اتصال دو رشته به یکدیگر استفاده می‌کند، در حالی که جاوا اسکریپت و jQuery فقط از یک علامت + استفاده می‌کنند. تلفیق در SQL نیز دقیقا به همین صورت عمل می‌کند. از یک عملگر خاص برای اتصال دو چیز به یکدیگر استفاده می‌شود. در زیر یک مثال Pseudocode مشاهده می‌کنید:    first_name = Joe  last_name = Coburn  whole_name = first_name + last_name در زبان‌های برنامه‌نویسی، تلفیق باعث می‌شود خوانایی کد افزایش یابد. اگر کد شما همیشه نیاز به دسترسی به دو رشته داشته باشد، ترکیب آن‌ها به یک رشته باعث می‌شود بتوانید راحت‌تر آن‌ها را به خاطر بسپارید و طول کد را نیز کاهش می‌دهد. اگرچه متغیرها در SQL خیلی به ندرت مورد استفاده قرار می‌گیرند(ولی به آن‌ها نیاز است)، به هر حال تلفیق هنوز هم برای بازگرداندن نتایج ترکیبی یا دستکاری داده‌ها مورد نیاز است. نحوه تلفیق تلفیق در SQL بسیار ساده است. اگرچه SQL یک زبان مرسوم است، اما موتورهای دیتابیس مجزا از ویژگی‌های مرسوم به روش‌های مختلف استفاده می‌کنند. اگرچه همه این مثال‌ها با روش مرسوم کد نویسی SQL نوشته شده‌اند، اما ترجمه آن‌ها به هر نوع متفاوت از کد نویسی در محیط‌های مختلف خیلی آسان است. کافی است در اینترنت عبارت "تلفیق >موتور دیتابیس مورد استفاده شما<" را جستجو کنید. موتورهای مختلف ممکن است طرز نحو و کد نویسی متفاوتی برای تلفیق داشته باشند، اما اصول کار همیشه یکسان است. به سراغ مثال نام خودمان باز‌می‌گردیم، یک کوئری select ساده به این شکل را در نظر بگیرید: C1 T1 هیچ چیز پیچیده‌ای در اینجا وجود ندارد، پس اجازه دهید تلفیق را انجام دهیم: C2 T2 همان‌طور که می‌بینید، تلفیق خیلی عالی عمل کرد، اما یک مشکل کوچک وجود دارد. نام کامل به وجود آمده به گونه‌ای تشکیل شده است که کاملا مشخص است حاصل تلفیق دو ستون جداگانه است – باید فاصله‌ای بین این دو نام وجود داشته باشد! خوشبختانه، برطرف کردن این مشکل نیز آسان است: خیلی ساده، یک فضای خالی بین کد تلفیق این دو اضافه کنید: C3 T3 این‌ها مثال‌های ساده‌ای هستند، اما باید ابتدا متوجه شوید که تلفیق چگونه عمل می‌کند – واقعا به همین سادگی است! عملگر خط(|) دو بار بین عبارت‌ها استفاده شده است. موتور SQL شما می‌داند که هر بخش موجود در قبل و بعد از این نماد باید با همدیگر تلفیق شوند و به نتیجه به صورت یک اسم کامل حاصل شود. اما مراقب باشید، اگر از عملگر تلفیق استفاده کنید، اما هیچ چیز را با یکدیگر تلفیق نکنید، سیستم به شما ارور خواهد داد. P1 همان‌طور که در بالا بیان شد، این مثال‌ها از روش کد نویسی مرسوم SQL استفاده می‌کنند. روش‌های کد نویسی دیگر ممکن است از عملگر متفاوتی استفاده کنند، یا حتی شاید لازم باشد یک تابع خاص را فراخوانی کنید. واقعا مهم نیست که از چه روشی برای تلفیق رشته‌ها استفاده می‌کنید، هر طور که موتور دیتابیس شما اجازه می‌دهد، همان‌طور عمل کنید. جزئیات بیشتر حالا که اصول را می‌دانید، اجازه دهید چند مثال‌ پیچیده تر را بررسی کنیم که همراه آن‌ها نقاط ضعف معمول نیز وجود داشته باشند. اکثر موتورهای دیتابیس با موفقیت عمل تلفیق ترکیبی از رشته‌ها و integerها را انجام می‌دهند، شاید حتی بتوانند تاریخ‌ها را نیز با هم تلفیق کنند. اما وقتی سعی می‌کنید انواع پیچیده‌ای مانند آرایه‌ها را با هم تلفیق کنید به مشکل بر‌خواهید خورد: C4 این کد عمل نخواهد کرد. امکان تلفیق رشته‌ها با اشیاء پیچیده مثل آرایه‌ها وجود ندارد. اگر در مورد کاری که باید انجام دهید خوب فکر کنید، خواهید فهمید که گاهی می‌توان به جای نوشتن یک قطعه کد پیچیده و طولانی که دست آخر عمل هم نمی‌کند، خیلی راحت یک قطعه کد ساده و کوچک بنویسید که سیستم راحت آن را اجرا کند. اگر با دقت راجع به آنچه باید انجام دهید فکر کرده‌اید، ولی هنوز نتوانسته‌اید کاری کنید SQL کد شما را اجرا کند، پس شاید وقت آن است که از یک زبان برنامه‌نویسی برای این منظور استفاده کنید. باور کنید نوشتن کد و منطق در SQL فوق‌العاده مشکل است. اگر قصد دارید سعی کنید در SQL منطق بنویسید، پس بهتر است برای این کار از یک زبان برنامه‌نویسی استفاده کنید(که برای این منظور زبان‌های ساده زیادی وجود دارند). تلفیق همچنین برای عبارات دارای where نیز به خوبی عمل می‌کند: C5 در این کد چند اتفاق افتاده است. در این مثال، DAY، MONTH و YEAR پارامتر‌هایی هستند که به شکل یک اسکریپت انتقال داده شده‌اند. شاید این‌ها توسط کد ایجاد شده باشند یا یک کاربر آن‌ها را وارد کرده باشد. همان‌طور که می‌بینید ابتدا آن‌ها با یکدیگر تلفیق شده و سپس به فرمت نوع  تاریخ(date) تبدیل شده‌اند(با استفاده از روش مرسوم SQL برای تبدیل کد به نوع تاریخ یعنی ::date).  استفاده از تلفیق به این شکل، به شما امکان می‌دهد بخش‌های مجزا و جدا از هم یک تاریخ را به یکدیگر متصل کنید، که در نهایت می‌توانید آن‌ها را به شکل یک تاریخ واقع نمایش دهید. فراموش نکنید که این مثال ساده نمی‌تواند در برابر نفوذ هکرها به SQL جلوگیری کند، پس بدون انجام اصلاحات لازم، به هیچ وجه از آن در کدهای مهم و تولیدی استفاده نکنید. یک نقطه ضعف دیگر که باید حواستان به آن باشد مقادیر null هستند(یک رشته null در واقع یک رشته خالی یا ناموجود است). کوئری زیر را در نظر بگیرید: C6 T4 این کوئری به دلیل نحوه کد نویسی عمل تلفیق درون موتور دیتابیس، قابل اجرا نیست. ممکن است همیشه با این مشکل مواجه نشوید، اما هر از گاهی برنامه‌نویسان با آن رو به رو می‌شوند.  اگر فکر می‌کنید داده بازگشتی توسط کوئری شما ممکن است null باشد، پس باید از coalesce استفاده کنید. Coalesce را می‌توان به معنای "اگر null نیست، آن را با این یک رشته یا ستون جایگزین کن" در نظر گرفت": C7 T5 حالا که می‌دانید عمل تلفیق در SQL چگونه است، می‌‌توانید برای نمایش نتایجی که به صورت معمول توسط کدهای SQL‌قابل نمایش نیستند، از آن استفاده کنید.

خطای تلفیق با آرایه

همان‌طور که در بالا بیان شد، این مثال‌ها از روش کد نویسی مرسوم SQL استفاده می‌کنند. روش‌های کد نویسی دیگر ممکن است از عملگر متفاوتی استفاده کنند، یا حتی شاید لازم باشد یک تابع خاص را فراخوانی کنید.

واقعا مهم نیست که از چه روشی برای تلفیق رشته‌ها استفاده می‌کنید، هر طور که موتور دیتابیس شما اجازه می‌دهد، همان‌طور عمل کنید.

جزئیات بیشتر

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

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

این کد عمل نخواهد کرد. امکان تلفیق رشته‌ها با اشیاء پیچیده مثل آرایه‌ها وجود ندارد.

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

اگر با دقت راجع به آنچه باید انجام دهید فکر کرده‌اید، ولی هنوز نتوانسته‌اید کاری کنید SQL کد شما را اجرا کند، پس شاید وقت آن است که از یک زبان برنامه‌نویسی برای این منظور استفاده کنید. باور کنید نوشتن کد و منطق در SQL فوق‌العاده مشکل است.

اگر قصد دارید سعی کنید در SQL منطق بنویسید، پس بهتر است برای این کار از یک زبان برنامه‌نویسی استفاده کنید(که برای این منظور زبان‌های ساده زیادی وجود دارند).

تلفیق همچنین برای عبارات دارای where نیز به خوبی عمل می‌کند:

در این کد چند اتفاق افتاده است. در این مثال، DAY، MONTH و YEAR پارامتر‌هایی هستند که به شکل یک اسکریپت انتقال داده شده‌اند. شاید این‌ها توسط کد ایجاد شده باشند یا یک کاربر آن‌ها را وارد کرده باشد.

همان‌طور که می‌بینید ابتدا آن‌ها با یکدیگر تلفیق شده و سپس به فرمت نوع  تاریخ(date) تبدیل شده‌اند(با استفاده از روش مرسوم SQL برای تبدیل کد به نوع تاریخ یعنی ::date).

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

فراموش نکنید که این مثال ساده نمی‌تواند در برابر نفوذ هکرها به SQL جلوگیری کند، پس بدون انجام اصلاحات لازم، به هیچ وجه از آن در کدهای مهم و تولیدی استفاده نکنید.

یک نقطه ضعف دیگر که باید حواستان به آن باشد مقادیر null هستند(یک رشته null در واقع یک رشته خالی یا ناموجود است). کوئری زیر را در نظر بگیرید:

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

اگر فکر می‌کنید داده بازگشتی توسط کوئری شما ممکن است null باشد، پس باید از coalesce استفاده کنید. Coalesce را می‌توان به معنای "اگر null نیست، آن را با این یک رشته یا ستون جایگزین کن" در نظر گرفت":

حالا که می‌دانید عمل تلفیق در SQL چگونه است، می‌‌توانید برای نمایش نتایجی که به صورت معمول توسط کدهای SQL‌قابل نمایش نیستند، از آن استفاده کنید.

منبع: makeuseof

 مطالب مرتبط

۱۳ دستور مهم SQL که هر برنامه باید بداند
چگونه از حملات نفوذ‌کننده به SQL جلوگیری کنیم؟
 طبقه بندی زبان های برنامه نویسی
به دست آوردن Exceptionها در #C و یافتن همه خطاها
 LINQ(زبان جستجوی یکپارچه)
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۳۱: توابع رشته‌ای – بخش ۳)
آموزش جامع SQL Server (جلسه ۳۱: توابع رشته‌ای – بخش ۳)

در جلسه قبل بخش ۲ مطالب مبحث توابع رشته‌ای یا string را به صورت کامل توضیح دادیم. و ...

آموزش جامع SQL Server (جلسه ۳۰: توابع رشته‌ای – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۰: توابع رشته‌ای – بخش ۲)

در جلسه قبل، مبحث توابع رشته‌ای یا String را آغاز کردیم. به دلیل ازدیاد این توابع و برای ...

با Visual Studio Code’s Live Share گروهی برنامه‌نویسی کنیم!
با Visual Studio Code’s Live Share گروهی برنامه‌نویسی کنیم!

چه در مراحل اولیه یادگیری یک زبان برنامه‌نویسی باشید یا یک کد نویس با تجربه و ماهر باشید، ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات