خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
نحو استفاده از تابع PATINDEX در SQL Server
تابع PATINDEX در SQL Server، یک تابع رشته ای است که موقعیت شروع اولین رخداد یک الگو را در یک عبارت مشخص برمی گرداند. قبل و بعد از الگوی مورد نظر، از کاراکتر % باید استفاده شود.
موقعیت شروع تابع PATINDEX، 1 می باشد و نوع مقدار بازگشتی در تابع PATINDEX، اگر عبارت مورد نظر از نوع varchar(max و یا nvarchar(max باشد bigint بوده و در غیر اینصورت int خواهد بود.
اگر الگو یا عبارت NULL باشد، تابع PATINDEX هم Null بر می گرداند. و اگر الگو یا عبارت، صفر باشد، صفر برمی گرداند.
SYNTAX استفاده از تابع PATINDEX به صورت زیر می باشد.
خب، با ذکر مثال از تابع PATINDEX، به طرز کار آن آشنا خواهید شد.
در کوئری زیر، موقعیت شروع ‘SER’ را در عبارت بر می گرداند. در واقع Ser همان الگو یا pattern بوده و آرگومان بعدی، همان expression یا عبارت ورودی است.
موقعیت شروع اولین کاراکتر Pattern را در آرگومان بعدی برگرداند. در عبارت MICROSOFT SQL SERVER 2016، تنها قسمتی که با الگوی ser مطابقت داشت، SERVER بود. پس موقعیت اولین کاراکتر از الگو را در عبارت بر میگرداند. ضمن اینکه الگو با اولین قسمت از عبارت که مچ شود، همان را بر میگرداند. در ادامه مثال دیگری را بررسی می کنیم.
در کوئری زیر از Wildcard های % و _ استفاده شده است. اما _ برای چه منظور استفاده شده است؟ در ادامه خواهیم دید.
کوئری فوق از Wildcard های _ و٪ برای یافتن موقعیت الگوی "S" و به دنبال آن هر کاراکتر دیگری می تواند باشد و سپس "L" در رشته مشخص شده استفاده می کند.
در عبارت MICROSOFT SQL SERVER 2016اولین و همچنین تنها جایی که الگوی S_L مطابقت دارد، کلمه SQL است. مثلا به کوئری زیر دقت کنید:
مقدار آن 0 بر می گردد چرا که این الگو با عبارت مطابقت ندارد. در عبارت MICROSOFT Exchange SERVER 2016 هیچ کلمه ای وجود ندارد که از الگوی داده شده تبعیت کند. به جای _ هر کاراکتری قرار دهید، باز هم مطابقت ندارد.
اما به کوئری زیر دقت کنید:
مثال دیگری از جایی که الگو با عبارت هیچ هموانی و مطابقت ندارد و به نوعی الگو در عبارت یافت نمی شود.
موقعیت شروع تابع 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
موقعیت شروع اولین کاراکتر 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" در رشته مشخص شده استفاده می کند.
در عبارت 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 هیچ کلمه ای وجود ندارد که از الگوی داده شده تبعیت کند. به جای _ هر کاراکتری قرار دهید، باز هم مطابقت ندارد.
اما به کوئری زیر دقت کنید:
DECLARE @Str AS VARCHAR(30) = 'MICROSOFT Exchange SERVER 2016 '
SELECT PATINDEX('%E______e%', @Str) AS Result
مثال دیگری از جایی که الگو با عبارت هیچ هموانی و مطابقت ندارد و به نوعی الگو در عبارت یافت نمی شود.
DECLARE @Str AS VARCHAR(30) = 'MICROSOFT SQL SERVER 2016'
SELECT PATINDEX('%2019%', @Str) AS Result
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: