SQL

توابع رشته ای در SQL (String Functions)

توابع رشته ای در SQL

مقدمه:

توابع رشته ای در SQL ابزاری قدرتمند برای دستکاری و تغییر رشته های متنی هستند. با استفاده از این توابع می توانید کارهایی مانند استخراج اطلاعات، تغییر حروف، حذف فضاهای اضافی و ترکیب رشته ها را انجام دهید.

کاربردهای توابع رشته ای:

  • استخراج اطلاعات: برای استخراج اطلاعات خاص از یک رشته متنی مانند نام، تاریخ یا کد.
  • تغییر حروف: برای تبدیل حروف کوچک به بزرگ و بالعکس.
  • حذف فضاهای اضافی: برای حذف فضاهای اضافی از ابتدای، انتهای یا بین کلمات یک رشته.
  • ترکیب رشته ها: برای چسباندن چند رشته به یکدیگر.

انواع توابع رشته ای:

  • LEN: طول یک رشته را برمی گرداند.
  • UPPER: حروف کوچک را به بزرگ تبدیل می کند.
  • LOWER: حروف بزرگ را به کوچک تبدیل می کند.
  • LTRIM: فضاهای اضافی از سمت چپ یک رشته را حذف می کند.
  • RTRIM: فضاهای اضافی از سمت راست یک رشته را حذف می کند.
  • SUBSTRING: قسمتی از یک رشته را بر اساس موقعیت و طول مشخص استخراج می کند.
  • REPLACE: یک رشته را با رشته دیگر جایگزین می کند.
  • CONCAT: چند رشته را به یکدیگر می چسباند.

مثال:

فرض کنید می خواهیم نام و نام خانوادگی را از یک رشته متنی استخراج کنیم. می توانیم از کد زیر استفاده کنیم:

SQL
SELECT 
  LTRIM(SUBSTRING(name, ۱, INSTR(name, ' '))),
  RTRIM(SUBSTRING(name, INSTR(name, ' ') + ۱))
FROM customers;

نکات مهم:

  • توابع رشته ای برای کار با رشته های متنی (VARCHAR, NVARCHAR, CHAR, NCHAR) استفاده می شوند.
  • برای استفاده از توابع رشته ای، باید نوع داده ستون مورد نظر را به درستی مشخص کنید.
  • توابع رشته ای حساس به حروف هستند.

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

مثال های اضافی:

  • تبدیل حروف اول هر کلمه به بزرگ:
SQL
SELECT UPPER(LEFT(word, ۱)) + LOWER(SUBSTRING(word, ۲)) FROM words;
  • حذف فضاهای اضافی از بین کلمات:
SQL
SELECT REPLACE(name, ' ', '') FROM customers;
  • ترکیب نام و نام خانوادگی:
SQL
SELECT CONCAT(firstname, ' ', lastname) FROM customers;

مثال جامع توابع رشته ای در SQL

فرض کنید یک جدول به نام users با ستون های زیر داریم:

  • id (عدد صحیح): شناسه منحصر به فرد هر کاربر
  • name (رشته): نام کامل کاربر
  • email (رشته): آدرس ایمیل کاربر
  • username (رشته): نام کاربری کاربر
  • password (رشته): رمز عبور کاربر
  • address (رشته): آدرس محل سکونت کاربر

در ادامه چند مثال از کاربرد توابع رشته ای در این جدول ارائه می دهیم:

۱. استخراج نام و نام خانوادگی از نام کامل:

SQL
SELECT 
  LTRIM(SUBSTRING(name, ۱, INSTR(name, ' '))),
  RTRIM(SUBSTRING(name, INSTR(name, ' ') + ۱))
FROM users;

۲. تبدیل حروف اول نام و نام خانوادگی به بزرگ:

SQL
SELECT 
  UPPER(LEFT(firstname, ۱)) + LOWER(SUBSTRING(firstname, ۲)) AS 'نام',
  UPPER(LEFT(lastname, ۱)) + LOWER(SUBSTRING(lastname, ۲)) AS 'نام خانوادگی'
FROM users;

۳. حذف فضاهای اضافی از آدرس ایمیل:

SQL
SELECT REPLACE(email, ' ', '') FROM users;

۴. تبدیل نام کاربری به حروف کوچک:

SQL
SELECT LOWER(username) FROM users;

۵. استخراج نام دامنه از آدرس ایمیل:

SQL
SELECT RIGHT(email, INSTR(email, '@') + ۱) FROM users;

۶. بررسی وجود عبارت “gmail.com” در آدرس ایمیل:

SQL
SELECT CASE WHEN INSTR(email, 'gmail.com') > ۰ THEN 'دارد' ELSE 'ندارد' END AS 'gmail.com' FROM users;

۷. ترکیب نام و نام خانوادگی با فاصله:

SQL
SELECT CONCAT(firstname, ' ', lastname) AS 'نام کامل' FROM users;

۸. حذف فضاهای اضافی از ابتدای و انتهای آدرس:

SQL
SELECT LTRIM(RTRIM(address)) FROM users;

۹. استخراج کد پستی از آدرس:

SQL
SELECT SUBSTRING(address, INSTR(address, '-') + ۱) FROM users;

۱۰. رمزنگاری رمز عبور:

SQL
SELECT MD5(password) FROM users;

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

نکات مهم:

  • توابع رشته ای برای کار با رشته های متنی (VARCHAR, NVARCHAR, CHAR, NCHAR) استفاده می شوند.
  • برای استفاده از توابع رشته ای، باید نوع داده ستون مورد نظر را به درستی مشخص کنید.
  • توابع رشته ای حساس به حروف هستند.

مثال دیگر توابع رشته ای در SQL

فرض کنید می خواهیم نام و نام خانوادگی را از یک رشته متنی استخراج کنیم، اما نام و نام خانوادگی با فاصله یا , از هم جدا نشده اند.

می توانیم از کد زیر استفاده کنیم:

SQL
SELECT 
  CASE WHEN INSTR(name, ',') > ۰ THEN
    LTRIM(SUBSTRING(name, ۱, INSTR(name, ','))) AS 'نام',
    RTRIM(SUBSTRING(name, INSTR(name, ',') + ۱)) AS 'نام خانوادگی'
  ELSE
    LTRIM(SUBSTRING(name, ۱, INSTR(name, ' '))) AS 'نام',
    RTRIM(SUBSTRING(name, INSTR(name, ' ') + ۱)) AS 'نام خانوادگی'
  END
FROM users;

در این کد:

  • ابتدا با استفاده از INSTR بررسی می کنیم که آیا , در رشته وجود دارد یا نه.
  • اگر , وجود داشته باشد، نام و نام خانوادگی را با استفاده از , جدا می کنیم.
  • اگر , وجود نداشته باشد، نام و نام خانوادگی را با استفاده از فاصله جدا می کنیم.

به این ترتیب می توانیم نام و نام خانوادگی را از هر نوع رشته متنی استخراج کنیم.

مثال دیگر:

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

می توانیم از کد زیر استفاده کنیم:

SQL
SELECT LOWER(SUBSTRING(email, ۱, INSTR(email, '@'))) || '@' || RIGHT(email, INSTR(email, '@') + ۱) FROM users;

در این کد:

  • ابتدا تمام حروف آدرس ایمیل را با استفاده از LOWER به حروف کوچک تبدیل می کنیم.
  • سپس با استفاده از INSTR موقعیت علامت @ را پیدا می کنیم.
  • در نهایت، نام کاربری (قسمت قبل از @) و نام دامنه (قسمت بعد از @) را با استفاده از || به هم می چسبانیم.

به این ترتیب می توانیم آدرس ایمیل را با حروف کوچک از هر نوع رشته متنی استخراج کنیم.

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

۰/۵ ( ۰ امتیاز )
نمایش بیشتر

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا