پیدا کردن کلمات مشابه

saeedasp

Member
سلام و خسته نباشید عرض میکنم
من برنامه ای نوشتم که میخوام اطلاعاتی که تو یه فیلد پایگاه داده اس کیو ال سرور مثلا اسامی هستش و مشایه هستند رو برام پیدا کنه از دستور

select * from £££ where esm like @esm
dt.selectcommand.parammeters.addwithvalue("@esm",textBox1.text);
استفاده کردم ولی فقط دقیقا کلمه ای که تو تکس باکس مینویسی رو میاره
زبان برنامه ام سی شارپ هستش
ممنون میشم راهنمایی کنین:)
 

the_king

مدیرکل انجمن
سلام و خسته نباشید عرض میکنم
من برنامه ای نوشتم که میخوام اطلاعاتی که تو یه فیلد پایگاه داده اس کیو ال سرور مثلا اسامی هستش و مشایه هستند رو برام پیدا کنه از دستور

select * from £££ where esm like @esm
dt.selectcommand.parammeters.addwithvalue("@esm",textBox1.text);
استفاده کردم ولی فقط دقیقا کلمه ای که تو تکس باکس مینویسی رو میاره
زبان برنامه ام سی شارپ هستش
ممنون میشم راهنمایی کنین:)

شما تشابه در چه حدی رو انتظار دارید؟ یک چند تا مثال بزنید که فرضا فلان اسم و با این و اون اسم از نظر شما مشابه اند.
اگه تشابه هوشمندانه ای باشه بهتره که از یکسری توابع جستجویی استفاده کنید که فرضا تشابه دو کلمه رو بر حسب
درصد تشابه یا تعداد حروف متفاوت شان تعیین می کنند. به عنوان مثال الگوریتم Levenshtein Distance
 

saeedasp

Member
سلام
ببینید مثلا اگه کلمهای مثل "سی" رو وارد کردیم بیا د کلماتت که در آنها لغت "سی " هست مثل" سی پلاس پلاس" یا"ساختمان داده ها به زبان سی" ویا کلماتی مثل "سی شارپ" و یا "سی شارپ جعفر نژاد قمی" هست رو پیدا کنه
 

the_king

مدیرکل انجمن
سلام
ببینید مثلا اگه کلمهای مثل "سی" رو وارد کردیم بیا د کلماتت که در آنها لغت "سی " هست مثل" سی پلاس پلاس" یا"ساختمان داده ها به زبان سی" ویا کلماتی مثل "سی شارپ" و یا "سی شارپ جعفر نژاد قمی" هست رو پیدا کنه

این تشابه ای که شما انتظار دارید پیچیده نیست، با همون LIKE هم قابل انجامه، احتمالا قواعد Pattern رو در
عملگر LIKE رعایت نمی کنید.

عملگر LIKE از شما یک الگو (Pattern) دریافت می کنه، شما باید در این Pattern از کاراکتر % یا _ استفاده کنید،
کاراکتر % مشخص می کنه که در فلان موقعیت 0 یا تعدادی کاراکتر هست که مقدارشون مهم نیست.
مثلا :
اگر دنبال سی% بگردید، مواردی رو پیدا می کنه که با سی شروع میشه.
اگر دنبال %سی بگردید، مواردی رو پیدا می کنه که به سی ختم میشه.
اگر دنبال %سی% بگردید، مواردی رو پیدا می کنه که در موقعیتی از رشته عبارت سی وجود داره.

کاراکتر _ مشخص می کنه که در فلان موقعیت یک کاراکتر هست که مقدارش مهم نیست.
اگر دنبال سی_ بگردید، مواردی رو پیدا می کنه که سه حرفی هستند و با سی شروع می شوند.
اگر دنبال _سی بگردید، مواردی رو پیدا می کنه که سه حرفی هستند و به سی ختم می شوند.
اگر دنبال _سی_ بگردید، مواردی رو پیدا می کنه که چهار حرفی اند و حرف دوم و سوم شان سی است.

شما احتمالا می خواهید از Pattern ای استفاده کنید که در دو طرف رشته % وجود داره، یعنی در کد برنامه
رشته "%" + textBox1.Text + "%" رو بجای textBox1.Text جستجو کنید.
 

جدیدترین ارسال ها

بالا