آموزش جامع SQL Server (جلسه ۲۹: توابع رشته‌ای – بخش ۱)
1398/04/22 12:48 , میلاد صاحب نظر

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

در جدول زیر توابع رشته‌ای در SQL Server را مشاهده می‌کنید که روی یک رشته ورودی عمل می‌کنند و یک مقدار رشته یا عددی بازمی‌گردانند:

تابع

توضیح

بخش ۱

ASCII

مقدار کد ASCII یک کاراکتر را بازمی‌گرداند.

CHAR

یک مقدار ASCII را به یک کاراکتر تبدیل می‌کند.

CHATINDEX

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

CONCAT

دو یا تعداد بیشتری رشته را به یک رشته تبدیل می‌کند.

CONCAT_WS

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

DEFFERENCE

مقادیر ()SOUNDEX از دو رشته را با هم مقایسه می‌کند.

FORMAT

یک مقدار فرمت شده با یک فرمت خاص و رفتار (اختیاری) را بازمی‌گرداند.

LEFT

تعداد مشخص شده‌ای کاراکتر را از یک رشته کاراکتر که از سمت چپ آغاز می‌شوند، استخراج می‌کند.

LEN

تعدادی کاراکتر را از یک رشته کاراکتر بازمی‌گرداند.

LOWER

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

LTRIM

یک رشته جدید از یک رشته مشخص شده را پس از حذف جاهای خالی بازمی‌گرداند.

بخش ۲

NCHAR

کاراکتر Unicode با کد integer مشخص شده را بازمی‌گرداند، همان‌طور که توسط استاندارد UNICODE تعریف شده است.

PATINDEX

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

QUOTENAME

یک رشته UNICODE همراه با فاصله دهنده را بازمی‌گرداند تا رشته ورودی را تبدیل به یک شناساگر دارای فاصله معتبر تبدیل کند.

REPLACE

تمام وقوع‌های یک زیر رشته را درون یک رشته، با یک زیر رشته دیگر جایگزین می‌کند.

REPLICATE

یک رشته که به تعداد دفعات خاصی تکرار شده است را بازمی‌گرداند.

REVERSE

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

RIGHT

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

RTRIM

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

SOUNDEX

یک کد (یا SOUNDEX) چهار کاراکتری از یک رشته را بر اساس اینکه چگونه گفته شده است، بازمی‌گرداند.

SPACE

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

بخش ۳

STR

داده‌های کاراکتری که از داده‌های عددی تبدیل شده است را بازمی‌گرداند.

STRING_AGG

ردیف‌های رشته‌های دارای یک مجزا کننده خاص را به یک رشته جدید متصل می‌کند.

STRING_ESCAPE

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

STRING_SPLIT

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

STUFF

بخشی از یک رشته را حذف می‌کند و سپس یک زیر رشته دیگر را با شروع از یک موقعیت خاص، به رشته اضافه می‌کند.

SUBSTRING

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

TRANSLATE

چندین تک کاراکتر را در یک عملیات جایگزین کرده و تک به تک ترجمه می‌کند.

TRIM

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

UNICODE

مقدار integer از یک کاراکتر را بازمی‌گرداند (همان‌طور که توسط استاندارد Unicode تعریف شده است).

UPPER

یک رشته را به حروف بزرگ تبدیل می‌کند.

 

در ادامه به توضیح این توابع خواهیم پرداخت. با ما همراه باشید!

تابع ASCII در SQL Server

تابع ()ASCII یک عبارت کاراکتر می‌پذیرد و مقدار کد ASCII از اولین کاراکتر سمت چپ در یک عبارت کاراکتری را بازمی‌گرداند.

کد زیر، syntax تابع ()ASCII را نشان می‌دهد:

ASCII ( input_string )  

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

همان‌طور که احتمالاً می‌دانید، ASCII مخفف کد استاندارد آمریکایی برای تبادل اطلاعات (American Standard Code for Information Interchange) است. ASCII به عنوان یک استاندارد رمزگذاری کاراکتر برای رایانه‌های مدرن به کار می‌رود.

مثال‌های تابع ()ASCII در SQL Server

مثال زیر مقادیر کد ASCII از کاراکتر A تا Z را بازمی‌گرداند:

SELECT 
    ASCII('AB') A, 
    ASCII('Z') Z;

خروجی به این شکل است:

A           Z
----------- -----------
65          90
 
(1 row affected)

قطعه کد زیر از تابع ()ASCII برای تولید ۲۶ حرف الفبا استفاده می‌کند:

WITH cte AS(
    SELECT  
        CHAR(ASCII('A')) [char], 
        1 [count]
    UNION ALL
    SELECT  
        CHAR(ASCII('A') + cte.count) [char], 
        cte.count + 1 [count]
    FROM    
        cte
)
SELECT  
    TOP(26) cte.char
FROM
    cte;

خروجی به این ترتیب است:

نتایج

در نتیجه، چگونگی استفاده از تابع ()ASCII برای به دست آوردن مقدار کد ASCII از یک کاراکتر را آموختید.

تابع CHAR در SQL Server

تابع ()CHAR یک مقدار کد ASCII را به یک مقدار کاراکتر تبدیل می‌کند. کد زیر، syntax تابع ()CHAR را نشان می‌دهد:

CHAR ( int_exp )  

در این syntax، کد inte_expr یک عبارت integer است که مقدار آن یک integer است که بازه آن بین 0 تا 255 است. اگر عبارت integer دارای مقداری باشد که خارج از این بازه است، آنگاه تابع ()CHAR مقدار NULL را بازمی‌گرداند.

تابع ()CHAR کاراکتری را بازمی‌گرداند که نوع داده آن CHAR(1) است.

توجه کنید که برای تبدیل یک کاراکتر به یک مقدار ASCII، از تابع ()ASCII استفاده می‌کنیم.

مثال تابع ()CHAR در SQL Server

مثال زیر از تابع ()CHAR برای به دست آوردن کاراکترهای اعداد 65 و 90 استفاده می‌کند:

SELECT 
    CHAR(65) char_65, 
    CHAR(90) char_90;

خروجی به این شکل است:

char_65 char_90
------- -------
A       Z
 
(1 row affected)

کد زیر مقدار NULL را بازمی‌گرداند، چون مقدار آرگومان خارج از بازه 0 تا 255 است.

SELECT 
    CHAR(1000) out_of_range;

کد زیر، خروجی را نشان می‌دهد:

out_of_range
------------
NULL
 
(1 row affected)

به این شکل، چگونگی استفاده از تابع ()CHAR برای به دست آوردن یک کاراکتر متناظر با یک مقدار ASCII را نیز آموختید.

تابع CHARINDEX در SQL Server

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

موقعیت آغازین از 1 شمرده می‌شود نه از 0.

کد زیر، syntax تابع ()CAHRINDEX را نشان می‌دهد:

CHARINDEX(substring, string [, start_location])

در این syntax:

  • Substring زیر رشته‌ای است که به دنبال آن هستیم. طول آن به 8000 کاراکتر محدود است.

  • String می‌تواند یک رشته، عبارت یا ستون باشد. این رشته‌ای است که جستجو می‌شود.

  • Start_location موقعیتی است که جستجو از آنجا آغاز می‌شود. Start_location می‌تواند یک integer، یک big integer یا یک عبارت باشد که مقدار آن ممکن است هر نوع داده‌ای دیگری باشد.

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

توجه کنید که تابع ()CAHRINDEX بر اساس نوع قیاس، می‌تواند هم به صورت حساس به بزرگی یا کوچکی حروف و هم غیر حساس به این موضوع عمل کند.

مثال‌های تابع ()CAHRINDEX در SQL Server

اجازه دهید چند مثال برای استفاده از تابع ()CAHRINDEX حل کنیم.

الف) استفاده از تابع ()CAHRINDEX برای انجام یک جستجو

مثال زیر از تابع ()CAHRINDEX برای انجام یک جستجوی ساده برای یافتن رشته ‘SQL’ درون رشته ‘SQL Server CHARINDEX’ استفاده می‌کند.

SELECT 
    CHARINDEX('SQL', 'SQL Server CHARINDEX') position;

خروجی به این شکل است:

position
-----------
1
 
(1 row affected)
ب) استفاده از تابع ()CAHRINDEX برای انجام یک جستجوی غیر حساس به بزرگی و کوچکی حروف

کد زیر  یک جستجوی غیر حساس به بزرگی و کوچکی حروف برای یافتن رشته ‘SERVER’ درون رشته ‘SQL Server CHARINDEX’ را نشان می‌دهد:

SELECT 
    CHARINDEX(
        'SERVER', 
        'SQL Server CHARINDEX'
    ) position;

خروجی به این ترتیب است:

position
-----------
5
 
(1 row affected)
پ) استفاده از تابع ()CAHRINDEX برای انجام یک جستجوی حساس به بزرگی و کوچکی حروف

مثال زیر، یک جستجوی حساس به بزرگی و کوچکی حروف برای یافتن رشته ‘SERVER’ در رشته ‘SQL Server CHARINDEX’ را نشان می‌دهد.

SELECT 
    CHARINDEX(
        'SERVER', 
        'SQL Server CHARINDEX' 
        COLLATE Latin1_General_CS_AS
    ) position;

خروجی به این شکل است:

position
-----------
0
 
(1 row affected)
ت) استفاده از تابع ()CAHRINDEX برای جستجوی یک زیر رشته ناموجود

مثال زیر یک جستجو برای یافتن زیر رشته ‘needle’ در رشته ‘This is a haystack’ را نشان می‌دهد:

DECLARE @haystack VARCHAR(100);  
SELECT @haystack = 'This is a haystack';  
SELECT CHARINDEX('needle', @haystack);  

خروجی به این شکل است:

position
-----------
0
 
(1 row affected)
ث) استفاده از تابع ()CAHRINDEX برای جستجو از یک موقعیت خاص

این مثال از پارامتر start_location برای آغاز جستجوی رشته ‘is’ از پنجمین و دهمین کاراکتر از رشته ‘This is a my sister’ استفاده می‌کند:

SELECT 
    CHARINDEX('is','This is a my sister',5) start_at_fifth,
    CHARINDEX('is','This is a my sister',10) start_at_tenth;

خروجی به این ترتیب است:

start_at_fifth start_at_tenth
-------------- --------------
6              15
 
(1 row affected)

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

تابع CONCAT در SQL Server

برای تبدیل دو یا تعداد بیشتری رشته به یک رشته، از تابع ()CONCAT با syntax زیر استفاده می‌کنیم:

CONCAT ( input_string1, input_string2 [, input_stringN ] );

تابع ()CONCAT دو رشته ورودی با حداکثر 255 کاراکتر را می‌گیرد و آن‌ها را به یک رشته تبدیل می‌کند. این تابع حداقل به دو رشته ورودی نیاز دارد. اگر یکی از رشته‌های ورودی را وارد نکنید، تابع ()CONCAT ارور می‌دهد.

اگر مقادیر رشته‌ای غیر کاراکتری وارد کنید، آنگاه تابع ()CONCAT قبل از اینکه آن دو مقدار را با هم ادغام کند، به صورت ضمنی آن‌ها را به رشته تبدیل می‌کند.

تابع ()CONCAT همچنین مقدار NULL را به یک رشته خالی با نوع (VARCHAR(1 تبدیل می‌کند.

توجه کنید که برای اضافه کردن یک مجزا کننده در طول فرآیند ادغام، باید از تابع ()CONCAT_WS استفاده کنید (که در قسمت بعدی همین جلسه آن را توضیح خواهیم داد).

مثال‌های تابع ()CONCAT در SQL Server

بیایید چند مثال حل کنیم تا بهتر با تابع ()CONCAT آشنا شویم.

الف) استفاده از تابع ()CONCAT برای چند رشته

مثال زیر از تابع ()CONCAT برای ادغام سه رشته John، فاصله یا space و Doe استفاده می‌کند:

SELECT 
    'John' + ' ' + 'Doe' AS full_name;

خروجی به این شکل است:

full_name
---------
John Doe
 
(1 row affected)
ب) استفاده از تابع ()CONCAT برای ستون‌های جدول

این مثال از جدول sales.customers از پایگاه داده نمونه Bikestores استفاده می‌کند:

جدول sales.customers

کد زیر از تابع ()CONCAT برای ادغام مقادیر در ستون‌های first_name و last_name از جدول Sales.customers استفاده می‌کند:

SELECT 
    customer_id,
    first_name,
    last_name,
    CONCAT(first_name, ' ', last_name) full_name
FROM 
    sales.customers
ORDER BY 
    full_name;

تصویر زیر، خروجی را نشان می‌دهد:

نتایج

پ)استفاده از تابع ()CONCAT برای مقدار NULL

مثال زیر از تابع ()CONCAT برای فرمت کردن آدرس‌ها برای مشتریان استفاده می‌کند:

SELECT 
    CONCAT(
        CHAR(13),
        CONCAT(first_name,' ',last_name),
        CHAR(13),
        phone,
        CHAR(13),
        CONCAT(city,' ',state),
        CHAR(13),
        zip_code
    ) customer_address
FROM
    sales.customers
ORDER BY 
    first_name,
    last_name;

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

نتایج

همان‌طور که به وضوح در خروجی نشان داده شده است، اگر مشتری شماره تلفن نداشته باشد، آنگاه تابع ()CONCAT از یک فضای خالی برای ادغام استفاده می‌کند.

توجه کنید که از تابع ()CHAR برای به دست آوردن کاراکتر خط جدید در این مثال استفاده کردیم.

به این شکل، چگونگی استفاده از تابع ()CONCAT برای اتصال دو یا چند رشته به یکدیگر را نیز آموختید.

تابع CONCAT_WS در SQL Server

تابع ()CONCAT_WS دو یا تعداد بیشتری رشته را با استفاده از یک مجزا کننده، به یک رشته تبدیل می‌کند. ()CONCAT_WS یعنی ادغام با مجزا کنند (concatenate with separator).

کد زیر، syntax تابع ()CONCAT_WS را نشان می‌دهد:

CONCAT_WS(separator,input_string1,input_string2,[...input_stringN]);

در این syntax:

Separator یک عبارت کاراکتر محور است که مقدار آن می‌تواند از یکی از نوع‌های VARCHAR، NCHAR، CHAR یا NVARCHAR باشد.

Input_string1 تا input_stringN عباراتی با هر نوع معتبر هستند. تابع ()CONCAT_WS قبل از انجام عمل ادغام، به صورت ضمنی مقادیری که دارای نوع غیر کاراکتری هستند را به نوع کاراکتری تبدیل می‌کند.

تابع ()CONCAT_WS رشته‌های ورودی را به یک رشته تبدیل می‌کند. این تابع، رشته‌های در حال ادغام را با separator مشخص شده در اولین آرگومان با هم ادغام می‌کند.

توجه کنید که ()CONCAT_WS حداقل به دو رشته ورودی نیاز دارد. یعنی اینکه اگر صفر یا فقط یک رشته ورودی وارد کنید، تابع ارور می‌دهد.

تابع ()CONCAT_WS با مقدار NULL همانند یک رشته خالی از نوع VARCHAR(1) برخورد می‌کند. این تابع همچنین در بین مقادیر NULL از مجزا کننده استفاده نمی‌کند.

در نتیجه، تابع ()CONCAT_WS می‌تواند بدون اضافه کردن چیزی، رشته‌های دارای مقادیر خالی را به هم متصل کند.

مثال‌های تابع ()CONCAT_WS در SQL Server

اجازه دهید چند مثال برای استفاده از تابع ()CONCAT_WS حل کنیم.

الف) استفاده از تابع ()CONCAT_WS برای اتصال چند رشته با یک مجزا کننده

مثال زیر از تابع ()CONCAT_WS برای تبدیل دو رشته به یک رشته استفاده می‌کند. در این مثال، دو رشته ادغام شده با استفاده از یک فضای خالی یا Space از هم جدا شده‌اند:

SELECT 
    CONCAT_WS(' ', 'John', 'Doe') full_name

خروجی به این شکل است:

full_name
---------
John Doe
 
(1 row affected)
ب) استفاده از تابع ()CONCAT_WS برای ستون‌های جدول

کد زیر از تابع ()CONCAT_WS برای اتصال مقادیر ستون‌های last_name و first_name از جدول sales.customers استفاده می‌کند. نام خانوادگی و نام با استفاده از ویرگول و Space از هم جدا شده‌اند:

SELECT 
    first_name, 
    last_name, 
    CONCAT_WS(', ', last_name, first_name) full_name
FROM 
    sales.customers
ORDER BY 
    first_name, 
    last_name;

تصویر زیر، بخشی از خروجی را نشان می‌دهد:

نتایج

پ) استفاده از تابع ()CONCAT_WS برای مقدار NULL

کد زیر، چگونگی عملکرد تابع ()CONCAT_WS برای رشته‌های ورودی که دارای مقادیر NULL هستند را نشان می‌دهد:

SELECT 
    CONCAT_WS(',', 1, 2, NULL, NULL, 3);

خروجی به این شکل است:

result
----------------------------------------
1,2,3
 
(1 row affected)

همان‌طور که به وضوح در خروجی مشاهده می‌کنید، تابع ()CONCAT_WS مقدار NULL را نادیده می‌گیرد و هیچ مجزا کننده‌ای بین مقادیر NULL اضافه نمی‌کند.

مثال زیر داده‌های مشتری را ادغام می‌کند تا آدرس‌های مشتریان را فرمت کند. اگر یک مشتری دارای شماره تلفن نباشد، تابع آن را نادیده می‌گیرد:

SELECT 
    CONCAT_WS
    (
        CHAR(13), 
        CONCAT(first_name, ' ', last_name), 
        phone, 
        CONCAT(city, ' ', state), 
        zip_code,
        '---'
    ) customer_address
FROM 
    sales.customers
ORDER BY 
    first_name, 
    last_name;

این تصویر، بخشی از خروجی را نشان می‌دهد:

تصاویر

توجه کنید که باید نتیجه query را از grid به متن تغییر دهید تا بتوانید خروجی را به شکل تصویر بالا مشاهده کنید:

باید نتیجه query را از grid به متن تغییر دهید تا بتوانید خروجی را به شکل تصویر بالا مشاهده کنید

ت) استفاده از تابع ()CONCAT_WS برای ایجاد فایل CSV

این کد از یک ویرگول ره عنوان مجزا کننده استفاده می‌کند و مقادیر موجود در ستون‌های last_name، first_name و email را با هم ادغام می‌کند تا یک فایل CSV ایجاد کند:

SELECT 
    CONCAT_WS(',', first_name, last_name, email)
FROM 
    sales.customers
ORDER BY 
    first_name, 
    last_name;

بخشی از خروجی به این شکل است:

نتایج

به این صورت، چگونگی استفاده از تابع ()CONCAT_WS برای ادغام رشته‌ها همراه با یک مجزا کننده را نیز آموختید.

تابع DEFFERENCE در SQL Server

تابع ()SOUNDEX بر اساس اینکه وقتی یک رشته به زبان می‌آید چگونه تلفظ می‌شود، رشته را به کد چهار کاراکتری تبدیل می‌کند.

برای مثال، هر دو واژه‌های Two و Too تلفظ یکسانی دارند، بنابراین باید دارای مقادیر ()SOUNDEX مشابه باشند:

SELECT 
    SOUNDEX('Too') Too, 
    SOUNDEX('Two') Two;

خروجی به این ترتیب است:

Too   Two
----- -----
T000  T000
 
(1 row affected)

تابع ()DEFFERENCE یک مقدار integer بازمی‌گرداند که تفاوت بین مقادیر ()SOUNDEX دو رشته را می‌سنجد.

کد زیر، syntax تابع ()DEFFERENCE را نشان می‌دهد:

DIFFERENCE(input_string1, input_string2)

نتیجه ()DEFFERENCE، تفاوت بین دو مقدار ()SOUNDEX را در مقیاس 0 تا 4 نشان می‌دهد. مقدار 0 یعنی ضعیف یا بدون وجود تشابه بین مقادیر ()SOUNDEX و مقدار 4 یعنی مقادیر ()SOUNDEX بسیار مشابه یا همسان.

مثال‌های تابع ()DEFFERENCE در SQL Server

بیایید چند مثال برای استفاده از تابع ()DEFFERENCE حل کنیم تا با عملکرد آن بهتر آشنا شویم.

الف) استفاده از تابع ()DEFFERENCE با مقادیر ()SOUNDEX مشابه

این مثال از تابع ()DEFFERENCE برای مقایسه مقادیر ()SOUNDEX از دو رشته Two و Too استفاده می‌کند:

SELECT 
    SOUNDEX('Two') soundex_two,
    SOUNDEX('Too') soundex_too,
    DIFFERENCE('Two', 'Too') similarity;

خروجی به این شکل است:

soundex_two soundex_too similarity
----------- ----------- -----------
T000        T000        4
 
(1 row affected)

کد زیر یک مقال دیگر است که تفاوت موجود در مقادیر ()SOUNDEX از رشته‌های John و Johny را مقایسه می‌کند:

SELECT 
    SOUNDEX('Johny') soundex_johny,
    SOUNDEX('John') soundex_john,
    DIFFERENCE('Johny', 'John') similarity;

خروجی به این ترتیب است:

soundex_johny soundex_john similarity
------------- ------------ -----------
J500          J500         4
 
(1 row affected)
ب) استفاده از تابع ()DEFFERENCE برای مقادیر ()SOUNDEX مختلف

مثال زیر، چگونگی عملکرد ()DEFFERENCE در هنگام مقایسه دو رشته که دارای تلفظ‌های ضعیف یا غیر مشابه هستند را نشان می‌دهد:

SELECT 
    SOUNDEX('Coffee') soundex_coffee,
    SOUNDEX('Laptop') soundex_laptop,
    DIFFERENCE('Coffee', 'Laptop') similarity;

خروجی به این شکل است:

soundex_coffee soundex_laptop similarity
-------------- -------------- -----------
C100           L131           1
 
(1 row affected)

به این ترتیب، چگونگی استفاده از تابع ()DEFFERENCE برای مقایسه مقادیر ()SOUNDEX دو رشته را آموختید.

تابع LEFT در SQL Server

تابع ()LEFT تعداد مشخصی کاراکتر را از سمت چپ یک رشته ارائه شده استخراج می‌کند. برای مثال، کد LEFT(‘SQL Server’, 3) خروجی SQL را نمایش می‌دهد.

Syntax تابع ()LEFT به این صورت است:

LEFT ( input_string , number_of_characters )  

در این syntax:

  • Input_string می‌تواند یک رشته، متغیر یا ستون باشد. نوع داده نتیجه input_string می‌تواند هر نوع داده‌ای به جز نوع‌های TEXT یا NTEXT باشد، این دو نوع به صورت ضمنی به VARCHAR و NVARCHAR تبدیل می‌شوند.

  • Number_of_characters یک integer مثبت است که تعداد کاراکترهای input_string که بازگشت داده می‌شوند را مشخص می‌کند.

وقتی input_string یک نوع داده‌ای کاراکتر غیر Unicode باشد، آنگاه تابع ()LEFT یک مقدار VARCHAR و اگر input_string یک نوع داده کاراکتر Unicode باشد، یک مقدار NVARCHAR بازمی‌گرداند.

مثال‌های تابع ()LEFT در SQL Server

اجازه دهید چند مثال برای استفاده از تابع ()LEFT حل کنیم تا بهتر آن را درک کنیم.

الف) استفاده از تابع ()LEFT برای یک رشته کاراکتر

کد زیر از تابع ()LEFT برای بازگرداندن سه کاراکتر اول از سمت چپ رشته کاراکتر SQL Server را نشان می‌دهد:

SELECT LEFT('SQL Server',3) Result_string;

خروجی به این شکل است:

Result_string
-------------
SQL
 
(1 row affected)
ب) استفاده از تابع ()LEFT برای یک ستون جدول

مثال زیر ۷ کاراکتر اول سمت چپ هر نام محصول در جدول production.products را بازمی‌گرداند:

SELECT 
    product_name,
    LEFT(product_name, 7) first_7_characters
FROM 
    production.products
ORDER BY 
    product_name;

تصویر زیر بخشی از خروجی را نشان می‌دهد:

نتایج

پ) استفاده از تابع ()LEFT برای دستور GROUP BY

مثال زیر از تابع ()LEFT برای بازگرداندن مجموعه‌ای از حروف اول نام محصول و تعداد هر محصول برای هر حرف اول، استفاده می‌کند:

SELECT
 LEFT(product_name, 1) initial,  
 COUNT(product_name) product_count
FROM 
 production.products
GROUP BY
 left(product_name, 1)
ORDER BY 
 initial;

خروجی به این شکل است:

نتایج

می‌توانید از این query برای صفحه‌بندی بر اساس حروف الفبا در برنامه‌های خود استفاده کنید.

صفحه‌بندی بر اساس حروف الفبا

به این شکل، با چگونگی استفاده از تابع ()LEFT برای به دست آوردن بخش سمت چپ یک رشته کاراکتر با تعداد مشخص شده از کاراکترها را نیز آموختید.

تابع LEN در SQL Server

تابع ()LEN تعداد کاراکترهای یک رشته ورودی (به جز فضاهای خالی بین حروف) را بازمی‌گرداند.

کد زیر، syntax تابع ()LEN را نشان می‌دهد:

LEN(input_string)

در این syntax، کد input_string می‌تواند یک رشته کاراکتر،، عبارت رشته‌ای یا یک ستون از داده‌های رشته‌ای یا دودویی باشد.

تابع ()LEN مقداری را بازمی‌گرداند که اگر input_string از نوع داده (NVARCHART(max)، VARCHAR(max یا (VARBINARY(max باشد، نوع داده آن BIGINT است و در غیر این صورت، نوع آن INT است.

مثال‌های تابع ()LEN در SQL Server

اجازه دهید چند مثال برای استفاده از تابع ()LEN حل کنیم.

الف) استفاده از تابع ()LEN برای یک رشته

مثال زیر از تابع ()LEN برای بازگرداندن تعداد کاراکتر‌های رشته SQL Server LEN و همین رشته با فضاهای خالی بین حروف استفاده می‌کند.

SELECT
    LEN('SQL Server LEN') length,
    LEN('SQL Server LEN   ') length_with_trailing_blanks;

خروجی به این شکل است:

نتایج

همان‌طور که مشاهده می‌کنید، تابع ()LEN از فضاهای خالی بین حروف صرف‌نظر می‌کند.

ب) استفاده از تابع ()LEN برای یک ستون

برای این مثال از جدول production.products از پایگاه داده نمونه استفاده می‌کنیم.

جدول production.products

کد زیر از تابع ()LEN برای بازگرداندن نام محصول و طول آن استفاده کرده و محصولات را بر اساس طول نام محصول مرتب می‌کند.

SELECT
    product_name,
    LEN(product_name) product_name_length
FROM
    production.products
ORDER BY
    LEN(product_name) DESC;

تصویر زیر، بخشی از خروجی را نشان می‌دهد:

نتایج

به این صورت، چگونگی استفاده از تابع ()LEN برای بازگرداندن تعداد کاراکترهای یک رشته کاراکتر را آموختید.

تابع LOWER در SQL Server

تابع ()LOWER یک رشته را به حروف کوچک تبدیل می‌کند. کد زیر، syntax تابع ()LOWER را نشان می‌دهد:

LOWER(input_string)

در این syntax، کد input_string می‌تواند یک رشته کاراکتر، متغیر، عبارت رشته کاراکتر یا ستون جدول باشد.

نوع input_string باید به صورت ضمنی قابل تبدیل شدن به VARCHAR باشد. در غیر این صورت، باید از تابع ()CAST برای تبدیل غیر ضمنی input_string استفاده کنید.

تابع ()LOWER حروف کوچک input_string را بازمی‌گرداند.

مثال‌های تابع ()LOWER در SQL Server

اجازه دهید چند مثال برای استفاده از تابع ()LOWER حل کنیم.

الف) استفاده از تابع ()LOWER برای رشته‌ها

این مثال از تابع ()LOWER برای تبدیل رشته ‘TEST’ به ‘test’ استفاده می‌کند:

SELECT 
    LOWER('TEST') result;

خروجی به این شکل است:

result
------
test
 
(1 row affected)
ب) استفاده از تابع ()LOWER برای ستون جدول

از جدول customers از پایگاه داده نمونه Bikestores در این مثال استفاده می‌کنیم:

جدول customers

کد زیر قبل از انجام عمل ادغام، از تابع ()LOWER برای تبدیل نام و نام خانوادگی مشتریان به حروف کوچک استفاده می‌کند:

SELECT 
    first_name, 
    last_name, 
    CONCAT_WS(
        ' ', 
        LOWER(first_name), 
        LOWER(last_name)
    ) full_name_lowercase
FROM 
    sales.customers
ORDER BY 
    first_name, 
    last_name;

تصویر زیر بخشی از خروجی را نشان می‌دهد:

نتایج

به این صورت، چگونگی استفاده از تابع ()LOWER برای تبدیل یک رشته به حروف کوچک را نیز آموختید.

تابع LTRIM در SQL Server

تابع ()LTRIM پس از حذف فضاهای خالی ابتدا و انتهای رشته، یک رشته بازمی‌گرداند. کد زیر، syntax تابع ()LTRIM را نشان می‌دهد:

LTRIM(input_string)

در این syntax، رشته ورودی یک عبارت کاراکتری یا داده‌های باینری است. این عبارت می‌تواند رشته، متغیر یا ستون باشد.

مقدار Input_string باید یک مقدار با نوع‌ داده‌ای (به جز نوع‌های داده‌ای NTEXT، TEXT و IMAGE) باشد که بتوانیم آن را به صورت ضمنی به VARCHAR تبدیل کنیم.  

در غیر این صورت، باید از تابع ()CAST برای تبدیل غیر ضمنی آن به یک رشته کاراکتر استفاده کنیم.

مثال‌های تابع ()LTRIM در SQL Server

اجازه دهید چند مثال برای استفاده از تابع ()LTRIM حل کنیم.

الف) استفاده از تابع ()LTRIM برای رشته‌ها

این مثال از تابع ()LTRIM برای حذف فضاهای خالی ابتدا و انتهای رشته ‘SQl Server LTRIM function’ استفاده می‌کند:

SELECT 
    LTRIM('   SQL Server LTRIM Function') result;

خروجی به این ترتیب است:

result
----------------------------
SQL Server LTRIM Function
 
(1 row affected)
ب) استفاده از تابع ()LTRIM برای حذف فضاهای خالی

مثال زیر پس از تبدیل رشته‌های به چند زیر رشته، از تابع ()LTRIM برای حذف فضاهای خالی ابتدا و انتهای رشته استفاده می‌کند:

SELECT 
    LTRIM(value) part
FROM 
    STRING_SPLIT('Doe, John', ',');

خروجی به این شکل است:

part
---------
Doe
John
 
(2 rows affected)

توجه کنید که اگر از تابع ()LTRIM استفاده نکنید، دومین ردیف یک فضای خالی ابتدا یا انتهای رشته خواهد داشت.

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

خلاصه

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

در این جلسه توابع LOWER، LEN، LEFT، DIFFERENCE، CONCAT_WS، CONCAT، CHARINDEX، CHAR، ASCII و LTRIM با مثال و مفصل توضیح داده شدند. بقیه توابع موجود در جدول نیز در دو جلسه آینده توضیح داده خواهند شد.

با MUG همراه باشید!

منبع: sqlservertutorial

 مطالب مرتبط

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

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

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

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

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

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

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