PDA

View Full Version : جستجوی یک کلمه در چندین فیلد یک تیبل



download69
سه شنبه 29 اسفند 1391, 11:32 صبح
سلام دوستان

چزور میشه یک کلمه رو در چندین فیلد یک تیبل جستجو کرد ؟؟؟؟

مثلا من میخوام اگر کاربر کلمه ای شبیه اعصاب و روان (مثلا اعصاب) رو وارد کرد، این کلمه در فیلد هایی مثل نام و نام خانوادگی و تخصص و دیگر فیلد ها جستجو بشه !!

من خودم از کد زیر استفاده می کنم که درست جواب نمیده

SELECT * FROM tblDrs where @q in (name,family,ostan,city,GroupName)

مشکل اینجا است که کاربر باید دقیقا عین اعصاب و روان رو وارد کنه تا جواب بده

من از '%@q%' هم استفاده کردم که خطا گرفت !!!

زیاد به sql وارد نیستم

لطفا کمک کنید

ممنون

یوسف زالی
سه شنبه 29 اسفند 1391, 12:14 عصر
سلام.
همه فیلد ها رو چمع کنید لایک بگیرید.

where @Q like '%' + name + family + ostan + '%'

download69
سه شنبه 29 اسفند 1391, 12:24 عصر
جواب نمیده !!!

عینا خوده کلمه رو هم که وارد می کنم اصن هیچی نمیاد !!!

veniz2008
سه شنبه 29 اسفند 1391, 16:32 عصر
سلام.
کد زیر کار میکنه ولی احتمالا دستورات دیگه ای هم وجود داشته باشه (Name1 و Name2 و Name3 ستون هایی هستند که قصد داری داخلشون بگردی).

select * from TblUser where Name1 like N'%' + @word + '%'
OR Name2 like N'%' + @word + '%' OR Name3 like N'%' + @word + '%'
موفق باشید.

download69
سه شنبه 29 اسفند 1391, 22:14 عصر
سلام.
کد زیر کار میکنه ولی احتمالا دستورات دیگه ای هم وجود داشته باشه (Name1 و Name2 و Name3 ستون هایی هستند که قصد داری داخلشون بگردی).

select * from TblUser where Name1 like N'%' + @word + '%'
OR Name2 like N'%' + @word + '%' OR Name3 like N'%' + @word + '%'
موفق باشید.

منم قبلا از همین روش استفاده میکردم که اونجور که میخواستم جواب نمی داد، فقط شما یه N اضاف کردید که منم اضاف کردم که بهتر قبل شد...

میشه بپرسم که دقیقا کار این N چی هستش ؟؟ ممنون

++

من با این روش اگر در یکی از فیلد ها مثلا اسم "حاتم" رو داشته باشم و اگه هاتم سرچ کنم چیزی رو نمیاره ؟؟؟

برای رفع این مشکل باید چیکار کرد ؟؟؟

veniz2008
سه شنبه 29 اسفند 1391, 22:55 عصر
میشه بپرسم که دقیقا کار این N چی هستش ؟؟
این N برای حروف یونیکد (که حروف فارسی هم شاملش میشه) بکار میره. قبلا بارها در سایت دربارش صحبت شده.


من با این روش اگر در یکی از فیلد ها مثلا اسم "حاتم" رو داشته باشم و اگه هاتم سرچ کنم چیزی رو نمیاره ؟؟؟
دستور like میگرده و شبیه (یا عین یک کلمه) رو پیدا میکنه. وقتی "هاتم" وارد کنی چیزی پیدا نمیکنه ولی اگر "تم" وارد کنی هم "حاتم" و هم "هاتم" رو پیدا میکنه چون "تم" در هر دو مشترکه. این مدل از like که واستون گذاشتم کل نوشته رو شامل میشه (یعنی کاری نداره که اون حرف (ها) در ابتدای نوشته باشه یا در وسط یا در انتهای نوشته). یعنی اگر "تم" وارد کنی چه تم اول نوشته باشه چه وسطش چه آخرش واسه شما لیستش میکنه. مثلا اگر کلمه ای مثل تمیم هم داشته باشید این کلمه رو هم شامل میشه ولی اگر "هاتم" رو وارد کنی چون چنین کلمه ای وجود نداره پس رکوردی هم پیدا نمیکنه.
موفق باشید.

یوسف زالی
چهارشنبه 30 اسفند 1391, 05:51 صبح
اگر مساله شما با N حل شده، با استفاده از روش پست دو فکر می کنم سریعتر بتونید فیلتر کنید.
برای اینکه هاتم بزنی حاتم بیاره هم راهی هست؛ استفاده از توابع Soundex و Diiference
اما درگیری زیاد داره.
مثلا باید اول هر کاراکتر فارسی رو به یک کاراکتر انگلیسی نگاشت کنید..