تابع CHARINDEX:

این تابع مکان رخداد یک رشته(expression1) در داخل رشته دیگر(expression2) را برمی گرداند.

نحوه استفاده:

CHARINDEX ( expression1,expression2 [ , start_location] )

 پارامترها:

پارامتر توضیح
expression1

یک عبارت رشته ای که مورد جستجو قرار می گیرد. expression1 به 8000 کاراکتر محدود می شود.

expression2

یک عبارت رشته ای که مقدار expression1  در آنجستجو می شود.

start_location

یک عبارت عددی که مکان شروع جستجو در عبارت دوم را مشخص می کند.(اختیاری است)

نوع داده خروجی(Return Type):

اگر عبارت دوم یکی از انواع زیر باشد، داده خروجی از نوع bigint خواهد بود در غیر اینصورت int

varchar(max) , nvarchar(max) , varbinary(max)

تذکر

1- اگر هر کدام از پارامترهای expression1 یا expression2 از انواع داده یونیکد باشد (nvarchar یا nchar) و دیگری نباشد، در این صورت دیگری نیز به نوع یونیکد تبدیل خواهد شد. تابع CHARINDEX را نمی توان با نوع های text و یا ntext و image بکار برد.

2- اگر هر کدام از پارامترهای expression1 یا expression2 خالی باشد، در این صورت CHARINDEX مقدار NULL را برخواهد گرداند البته اگر سطح compatibility پایگاه داده روی 70 یا بالاتر تنظیم شده باشد. اگر این مقدار روی 65 یا پایین تر تنظیم شده باشد، در صورتی که هر دو پارامتر NULL باشد CHARINDEX مقدار NULL برمی گرداند.

3- اگر expression1 در داخل expression2 پیدا نشد، تابع CHARINDEX مقدار 0 را برمی گرداند.

4- تابع CHARINDEX مقایسه ها را براساس Collation ورودی انجام می دهد. برای انجام یک مقایسه براساس یک Collation تعریف شده می توانید از تابع COLLATE استفاده کنید.

5- مکان کاراکتر اول را 1 در نظر بگیرید نه 0...!


مثال: در مثال زیر، مکان رخداد عبارت "bicycle" در متغیر "document@" برگدانده می شود:

DECLARE @document varchar(64)
set @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('bicycle', @document) as result 
GO

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

result
48

برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.

READ MORE