PDA

View Full Version : جستجو روي N تا کلمه



spicirmkh
شنبه 23 آبان 1388, 16:14 عصر
سلام

فرض کنيد nتا کلمه داريم مثل service webpage copied که اينجا 3 تا است و در textbox وارد کرده ايم

حال مي خواهيم اين 3 کلمه ترکيب and کنيم که اگر در جدول داخل فيلد title وجود داشت نشان دهد

مثل
Open a web service with text that you've copied from a webpage

با تشکر

ali.akhbary
شنبه 23 آبان 1388, 17:44 عصر
اين مال OR


select * from tbl_MyTable where Title in ('web' , 'service', 'page')
اين هم مال AND


select * from tbl_MyTable where Title like '%web%' and Title like '%service%' and Title like '%page%'

البته ما كه نمي تونيم N كلمه داشته باشيم. پس بايد شرط رو به صورت دايناميك بسازي

spicirmkh
شنبه 23 آبان 1388, 18:04 عصر
اگر ورودي ما نا مشخص بود يعني اگر 4 کلمه بعضي مواقع 2 يا 1 کلمه بود چه کنيم

البته ما كه نمي تونيم N كلمه داشته باشيم. پس بايد شرط رو به صورت دايناميك بسازي

ali.akhbary
شنبه 23 آبان 1388, 18:16 عصر
اگر ورودي ما نا مشخص بود يعني اگر 4 کلمه بعضي مواقع 2 يا 1 کلمه بود چه کنيم

از Dynamic SQL استفاده كنيد.

شرط ها و كل دستور select رو به صورت پويا و به كمك رشته و عملگر جمع بسازيد. سپس اون رو Execute كنيد.
توضيح بيشتر؟

spicirmkh
شنبه 23 آبان 1388, 18:53 عصر
خود sql تابع اي ندارد که اين کار بکنيم مثل TEXTSEARCH که رشته بدهيم خودش داخل فيلد بود مقدار True برگرداند

spicirmkh
یک شنبه 24 آبان 1388, 09:47 صبح
براي or از اين سايت مشود استفاده کرد http://www.geekzilla.co.uk/view5C09B52C-4600-4B66-9DD7-DCE840D64CBD.htm اما براي And پيدا نکردم

اين مال OR


select * from tbl_MyTable where Title in ('web' , 'service', 'page')
اين هم مال AND


select * from tbl_MyTable where Title like '%web%' and Title like '%service%' and Title like '%page%'

البته ما كه نمي تونيم N كلمه داشته باشيم. پس بايد شرط رو به صورت دايناميك بسازي

spicirmkh
یک شنبه 24 آبان 1388, 11:10 صبح
يکي از دوستان پيشنهاد استفاده از دستور for داده است

مثل


string s = "select * from tbl_MyTable where Title like";
for(int i = 0; i < n ; i++)
{
s += "%" + x[i] + "%" ;
if ( i < n-1)
{
s += "and Title like";
}

}

ali.akhbary
یک شنبه 24 آبان 1388, 19:38 عصر
يکي از دوستان پيشنهاد استفاده از دستور for داده است

مثل


string s = "select * from tbl_MyTable where Title like";
for(int i = 0; i < n ; i++)
{
s += "%" + x[i] + "%" ;
if ( i < n-1)
{
s += "and Title like";
}

}

منم برا AND همين رو گفته بودم. كه شرط رو بسازيم.

از Dynamic SQL استفاده كنيد.

شرط ها و كل دستور select رو به صورت پويا و به كمك رشته و عملگر جمع بسازيد. سپس اون رو Execute كنيد.
توضيح بيشتر؟

ali.akhbary
یک شنبه 24 آبان 1388, 19:50 عصر
براي or از اين سايت مشود استفاده کرد http://www.geekzilla.co.uk/view5C09B52C-4600-4B66-9DD7-DCE840D64CBD.htm اما براي And پيدا نکردم
كار قشنگي بود، با همين متد And رو هم ميشه پياده سازي كرد.

spicirmkh
دوشنبه 25 آبان 1388, 08:21 صبح
كار قشنگي بود، با همين متد And رو هم ميشه پياده سازي كرد.
چه جوري به اين متد مي شود and ساخت لطفا توضيح دهيد