خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


نحو استفاده از تابع PATINDEX در SQL Server

نحو استفاده از تابع PATINDEX در SQL Server
تابع PATINDEX در SQL Server، یک تابع رشته ای است که موقعیت شروع اولین رخداد یک الگو را در یک عبارت مشخص برمی گرداند. قبل و بعد از الگوی مورد نظر، از کاراکتر % باید استفاده شود.

نرم افزار سامانه مودیان راهکار
موقعیت شروع تابع PATINDEX، 1 می باشد و نوع مقدار بازگشتی در تابع PATINDEX، اگر عبارت مورد نظر از نوع varchar(max و یا nvarchar(max باشد bigint بوده و در غیر اینصورت int خواهد بود.


اگر الگو یا عبارت NULL باشد، تابع PATINDEX هم Null بر می گرداند. و اگر الگو یا عبارت، صفر باشد، صفر برمی گرداند.
SYNTAX استفاده از تابع PATINDEX به صورت زیر می باشد.

PATINDEX ( '%pattern%' , expression )

خب، با ذکر مثال از تابع PATINDEX، به طرز کار آن آشنا خواهید شد.
در کوئری زیر، موقعیت شروع ‘SER’ را در عبارت بر می گرداند. در واقع Ser همان الگو یا pattern بوده و آرگومان بعدی، همان expression یا عبارت ورودی است.

DECLARE @Str AS VARCHAR(30) = 'MICROSOFT SQL SERVER 2016'

SELECT PATINDEX('%SER%', @Str) AS Result

نحو استفاده از تابع PATINDEX در SQL Server
موقعیت شروع اولین کاراکتر Pattern را در آرگومان بعدی برگرداند. در عبارت MICROSOFT SQL SERVER 2016، تنها قسمتی که با الگوی ser مطابقت داشت، SERVER بود. پس موقعیت اولین کاراکتر از الگو را در عبارت بر میگرداند. ضمن اینکه الگو با اولین قسمت از عبارت که مچ شود، همان را بر میگرداند. در ادامه مثال دیگری را بررسی می کنیم.
در کوئری زیر از Wildcard های % و _ استفاده شده است. اما _ برای چه منظور استفاده شده است؟ در ادامه خواهیم دید.

DECLARE @Str AS VARCHAR(30) = 'MICROSOFT SQL SERVER 2016'

SELECT PATINDEX('%S_L%', @Str) AS Result

کوئری فوق از Wildcard های _ و٪ برای یافتن موقعیت الگوی "S" و به دنبال آن هر کاراکتر دیگری می تواند باشد و سپس "L" در رشته مشخص شده استفاده می کند.

نحو استفاده از تابع PATINDEX در SQL Server
در عبارت MICROSOFT SQL SERVER 2016اولین و همچنین تنها جایی که الگوی S_L مطابقت دارد، کلمه SQL است. مثلا به کوئری زیر دقت کنید:

DECLARE @Str AS VARCHAR(30) = 'MICROSOFT Exchange SERVER 2016 '

SELECT PATINDEX('%E_e%', @Str) AS Result

مقدار آن 0 بر می گردد چرا که این الگو با عبارت مطابقت ندارد. در عبارت MICROSOFT Exchange SERVER 2016 هیچ کلمه ای وجود ندارد که از الگوی داده شده تبعیت کند. به جای _ هر کاراکتری قرار دهید، باز هم مطابقت ندارد.

نحو استفاده از تابع PATINDEX در SQL Server
اما به کوئری زیر دقت کنید:

DECLARE @Str AS VARCHAR(30) = 'MICROSOFT Exchange SERVER 2016 '

SELECT PATINDEX('%E______e%', @Str) AS Result

نحو استفاده از تابع PATINDEX در SQL Server
مثال دیگری از جایی که الگو با عبارت هیچ هموانی و مطابقت ندارد و به نوعی الگو در عبارت یافت نمی شود.

DECLARE @Str AS VARCHAR(30) = 'MICROSOFT SQL SERVER 2016'

SELECT PATINDEX('%2019%', @Str) AS Result

نحو استفاده از تابع PATINDEX در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز