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

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

مثال۱:

به دستور زیر دقت کنید:

SELECT FAMILY, SUBSTR(FAMILY, 2, 3) FROM PERSON;

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

FAMILY    SUB
--------- ---
GHAFFARI HAF
GHAFFARI HAF
GHAFFARI HAF
KARKHANI ARK
JALALI ALA

حال اگر برای آرگومان سوم مقداری در نظر نگیریم، نتیجه چگونه خواهد شد؟! به مثال زیر توجه کنید:

SELECT FAMILY, SUBSTR(FAMILY, 3) FROM PERSON;

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

FAMILY SUBSTR(FAMILY, 3)
------ -----------------
GHAFFARI AFFARI
GHAFFARI AFFARI
GHAFFARI AFFARI
KARKHANI RKHANI
JALALI LALI

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

SELECT FAMILY, SUBSTR(FAMILY, -3, 2) FROM PERSON;

توجه داشته باشید اگر در آرگومان دوم عددی منفی به کار ببریم نقطه‌ی شروع با شمردن از انتهای داده‌ها آغاز می‌شود. نتیجه‌ی کویری را ببینید:

FAMILY   SU
-------- --
GHAFFARI AR
GHAFFARI AR
GHAFFARI AR
KARKHANI AN
JALALI AL

مثال ۲:

کوئری بنویسید که از حرف ۲ داده تا ۴ حرف بعد از آن شروع به جداسازی کند:

SELECT SUBSTR(NAME,2,4) FROM HOLO;
SUBSTR(NAME,2,4)
---------------
mirs

نکته: تو جاوا(SUBSTRING) از ۲ تا ۴ رو برمی‌گردونه ولی تو SQL از ۲ شروع میکنه ۴ تا میره جلو و خروجی رو نشون میده.