PDA

View Full Version : مشکل جستجو بر اساس نام



diba_gh
شنبه 13 شهریور 1389, 00:55 صبح
با سلام
می خواستم بدونم برای جستجو بر اساس نام خانوادگی چه مواردی را باید رعایت کنیم تا نتایج جستجو موفق باشه. مثلا ممکنه کلماتی باشند که دارای space هستند یعنی از چند جزء تشکیل شدند(مثل حسین پور) چه طور باید این کلمات را در دیتابیس وارد کرد تا این مشکل زیر به وجود نیاید.
مثلا اگر کاربر اشتباهی در هنگام جستجو، به جای کلمه ی حسین پور( با یک space)، کلمه ی حسین پور(با دو space) را وارد کرد، اون وقت حسین پور (با یک space) را هم نشان داده شود.
حالا این یک مشکل بود که به ذهن من رسید ممکنه که مشکلات دیگری هم باشند، کلا می خوام بدونم برای جستجو بر اساس نام چه قوانینی را باید رعایت کنیم؟

aghayex
یک شنبه 14 شهریور 1389, 06:25 صبح
اصولا خود من برا جستجوهای رشته ای از عین عبارت استفاده نمی کنم .
اگه از like استفاده کنی مشکلت حل می شه یعنی اگه کاربر ح رو وارد کرد تمام نام خانوادگی هایی که اولشون ح است رو میاره حالا این ح ، حسین باشه مثل اون میشه یعنی کسانی که اول نام خانوادگیشون حسین باشه

pezhvakco
یک شنبه 14 شهریور 1389, 10:06 صبح
سوال شما یکم نامفهومه ؟

اگر کاربر اشتباهی در هنگام جستجو، به جای کلمه ی حسین پور( با یک space)، کلمه ی حسین پور(با دو space) را وارد کرد، اون وقت حسین پور (با یک space) را هم نشان داده شود.
این طور خواصته ها رو میشه با کد نویسی در خود زبان برنامه نویسی بدست آورد .
و این طور نیست که بشه یه قانون کلی براش تعیین کرد .

ولی معمولا در هنگام جستجو، دقیقا بر اساس مقدار وارده، خروجی داده میشه . چون کاربر می تونه مقدار رو تغییر بده و هیچ مشکلی پیش نمی یاد .

ali_zzr
یک شنبه 14 شهریور 1389, 14:55 عصر
همونطور که aghayex (http://barnamenevis.org/forum/member.php?u=132075) گفت بهتر از دستور Like استفاده کنی
مثلا یک همچین دستوری


select * from Customers where name like '%' + @name + '%'

این دستور همه رکورد هایی که در فیلد name آنها کلمه @name باشد بر میگرداند

diba_gh
سه شنبه 16 شهریور 1389, 01:04 صبح
من با دستور like آشنایی دارم.مثلا شما فرض کنید که اگر کاربر در تکس باکس، کلمه ی "حسین پ" را نوشته باشد آنوقت کلمه ی "حسینپور" نمایش داده نمی شود. در اصل space در بعضی جاها مشکل به وجود می یاره.


"select name from table1 where name like N"'%textBox1.text'" "
ولی شنیده بودم که می شه نامی که در textBox وارد می شود (در فرم جستجو) را به عنوان یک string گرفت بعد space های اون رو حذف کرد. سپس بر اساس همین srring بدون space، جستجو داده شود.
کسی در این مورد چیزی شنیده؟

pezhvakco
سه شنبه 16 شهریور 1389, 10:21 صبح
نامی که در textBox وارد می شود (در فرم جستجو) را به عنوان یک string گرفت بعد space های اون رو حذف کرد.
به نظر من این شرایط خاص رو بهتره در همون زبان برنامه نویسی در نظر بگیری و بعد بنا به اون ها کد دستور های Sql رو فراخوانی کنی بهتر و راحت تر است .


کسی در این مورد چیزی شنیده؟
این ها شنیدینی نیست ؟
کار کردنی است . می تونی با کد دستور Space ها و حذف کنی (در زبان برنامه نویسی و یا خود Sql) .