View Full Version : پیدا کردن محل چند Keyword با استفاده از patindex
titbasoft
سه شنبه 22 فروردین 1385, 11:35 صبح
سلام ،
چطور امکان این وجود داره که چند تا keyword برای pattern ای که پارامتر patindex است مشخص کرد.
مثلا 3 تا کلمه hello , ali , bye رو در نظر بگیرید ، چطور امکان داره اولین جایی که هر کدوم از این 3 تا کلمه در یک رشته پیدا شد رو پیدا کرد؟ (حتی اگر یکی از اونها پیدا شد)
ممنون
AminSobati
سه شنبه 22 فروردین 1385, 14:21 عصر
سلام هاشم جان،
من راهی جز تست کردن حالتهای مختلف به ذهنم نمیرسه:
select case when patindex('%ali%',MyColumn)=0 then
case when patindex('%hello%',MyColumn)=0 then
case when patindex('%bye%',MyColumn)=0 then 0
else patindex('%bye%',MyColumn) end
else patindex('%hello%',MyColumn) end
else patindex('%ali%',MyColumn) end
from MyTable
titbasoft
سه شنبه 22 فروردین 1385, 15:01 عصر
ببخشید استاد ،
متاسفم که یکی دیگه از این سناریوهای فضایی رو مطرح کردم. ولی نمیتونم از solution شما استفاده کنم. اون هم به علت اینکه تعداد کلمات متغییر هستند.
اصلا بزارید اصل ماجرا رو بگم: ما با استفاده از FTS مثلا 10 تا رکورد پیدا می کنیم. criteria ی ما از منطق and یا or هم ممکنه استفاده کنه. هر کدوم از این رکوردها ممکنه یک text به حجم تقریبی 100 کیلو داشته باشن. اگه زمان نمایش result بخواهیم کل متن رو بیاریم سمت client و اونجا فیلتر بشه به معنای انتقال چیزی حدود یک مگ اطلاعات روی client است. حالا ما می خواهیم برای رفع این مشکل همسایگی 100 کاراکتری اولین keyword ای که درمتن پیدا شد رو بیاریم سمت client. حالا چه باید کرد؟
ظاهرا مجبورم تابعش رو خودم دستی بنویسم. یک scalar func کارم رو راه میندازه؟
امیدوارم خوب توضیح داده باشم.
AminSobati
سه شنبه 22 فروردین 1385, 22:53 عصر
با توجه به اینکه تعداد Keywordهایی که کاربر وارد میکنه قابل پیش بینی نیست لذا نمیتونین یک Query ثابت داشته باشید که برای تمام حالتها قابل استفاده باشه. Scalar Valued Function یا Dynamic TSQL میتونن کمک خوبی باشند!
titbasoft
چهارشنبه 23 فروردین 1385, 06:58 صبح
ممنون استاد.
توی 2005 هم چنین چیزی پیشبینی نشده. البته اونجا فکر کنم بشه از regx دات نت توی یک CLR SP استفاده کرد.
AminSobati
چهارشنبه 23 فروردین 1385, 11:12 صبح
regx بد فکری نیست! مثلا تمام keywordهای مورد نظر کاربر رو هم به CLR Method پاس کنیم و ...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.