PDA

View Full Version : جستجو دقیقتر در LIKE



maythamahmadi
جمعه 27 دی 1392, 17:46 عصر
سلام.چطور میشه بر اساس Like رکوردهایی که مثلا حرف D یا مثلا K به کار رفته رو پیدا کنه؟؟

simorgh-hossein
جمعه 27 دی 1392, 19:20 عصر
برای اینکار باید علامت درصد (%) رو در هر 2 طرف ستون استفاده کنی !!!
بصورت زیر :

Select * From Table Where Column Like '%d%'

در ضمن اگه تو جدولت از کلمات لاتین استفاده میکنی باید از گزینه ای بنام LOWER استفاده کنی تا جستجوت به حروف کوچک و بزرگ حساس نباشه !
بصورت زیر :
SELECT * FROM table where LOWER(column) like LOWER('%K%')

موفق باشید .:لبخندساده:

maythamahmadi
جمعه 27 دی 1392, 21:29 عصر
حالا دوست من برای کل حروف الفبا باشه چی؟؟؟

mohssen_mz
جمعه 27 دی 1392, 22:32 عصر
حالا دوست من برای کل حروف الفبا باشه چی؟؟؟

توضیح بهتر راهنمایی بهتر

simorgh-hossein
جمعه 27 دی 1392, 23:07 عصر
خب یعنی چی ؟؟؟؟ :متفکر:

دستوری که بنده گفتم مگه فرقی داره ؟؟؟؟ :متعجب:

خب واسه همه حروف یکسان عمل میکنه دیگه !!!

mosafer_deltang
پنج شنبه 03 بهمن 1392, 10:04 صبح
خوب یعنی اینکه یه تکست باکس داریم که کاربر چند تا کلمه توش مینویسه و ما باید رکوردهایی رو بیاریم که اون کلمه ها توش هستند
مثلا کاربر سه تا کلمه A و B و C رو تایپ میکنه چه کار کنیم که هم A%B%C و هم A%C%B و هم C%A%B و کلا همه ترکیبات رو بیاره؟
یه چیزی شبیه جستجوی گوگل
آیا باید همه جایگشت های کلمات رو با دستور Like بنویسیم یا راه دیگه ای هم داره؟

حمیدرضاصادقیان
پنج شنبه 03 بهمن 1392, 23:16 عصر
سلام.
ببینید رشته ای که شما وارد میکنید در واقع بین این دو علامت قرار میگیره.
البته علامتهایی نیز وجود داره که اگر چند کلمه نوشتید کل اون رشته ها رو جستجو کنه. ولی اگر کل عبارت داخل عبارت %% قرار بگیره براساس اون هرچی باشه چه اول چه وسط و چه آخر متن برای شما میاره.
البته استفاده از این عبارت باعث میشه که SQL Server از Index استفاده نکنه و روی Performance شما در صورت داشتن رکوردهای بالا تاثیر منفی خواهد گذاشت.
در ضمن شما که کل حروف رو نمیخوای باهم جستجو کنید.
داخل این عبارت یک پارامتر میگیره که از طریق برنامه رشته مورد نظر بهش ارسال میشه.

starting
شنبه 05 بهمن 1392, 17:08 عصر
آیا باید همه جایگشت های کلمات رو با دستور Like بنویسیم یا راه دیگه ای هم داره؟
Full Text Search امکانات و قابلیت های زیادی برای جستجو روی متن داره اما نمی دونم آیا این کار را می کنه براتون یا نه.

اگر اصرار دارین که با T-SQL اینکار صورت بگیره میشه از یک سری ترفندها و تکنیک ها برای این منظور استفاده کنید مثلا رشته مورد نظر را ابتدا Split کرده و در نهایت یک Table حاصل میشه و این جدول را سپس با جدول مورد نظر Join می کنی و در خاتمه بر اساس کلید اولیه جدول اصلی گروه بندی کرده داده ها و توسط HAVING اون گروه هایی که COUNT اشان برابر است با 3 را بدست می آوردید.

تکنیک فوق یک روش Dynamic هست اما هزینه داره. در حالی که اگر بشه با FTS به این خواسته پاسخ داد سرعت به مراتب بهتر خواهد بود چون در اونجا Index های مختص جتسجو در متن ایجاد میشه.

اگر مثلا مشخص هست بر اساس چند کلمه می خواهید جستجو کنید یا سقفش مشخص هست میشه چنین کوئری نوشت:

SELECT ...
FROM ...
WHERE column LIKE '%value1%'
AND column LIKE '%value2%'
AND column LIKE '%value3%'