View Full Version : مشکل در کوئری جست و جو
alireza_g698
یک شنبه 09 شهریور 1393, 21:15 عصر
با سلام به مهندسین گرامی
من در سی شارپ این کوئری را برای جست و جو مینوسیم اما متاسفاه در بعضی موارد ضعف داره.برای مثلال اگر من در دیتابیسم کالایی داشته باشم با عنوان "ram 6GB"
وقتی این گونه جست و جو میکنم بم نتیجه را درست نشون میده
select * from ware where name like '%ram%6%'
اما وقتی جای "ram" و جای "6" را با هم عوض میکنم نتیجه ای به من نشون نمیده
یعنی وقتی اینطوری مینوسیم
select * from ware where name like '%6%ram%'
تذکر:علامت"%"پایان هر کلمه وارد شده است.
پیشاپیش ممنون از توجه دوستان
محمد آشتیانی
یک شنبه 09 شهریور 1393, 22:02 عصر
سلام
میتونی از UNION استفاده کنی ، مثلا
SELECT * FROM ware WHERE name LIKE '%ram%'
UNION
SELECT * FROM ware WHERE name LIKE '%6%'
یا شرط ها رو ORکنی
SELECT * FROM ware WHERE name LIKE '%6%' OR name LIKE '%ram%'
موفق باشید.
veniz2008
یک شنبه 09 شهریور 1393, 23:32 عصر
با سلام به مهندسین گرامی
من در سی شارپ این کوئری را برای جست و جو مینوسیم اما متاسفاه در بعضی موارد ضعف داره.برای مثلال اگر من در دیتابیسم کالایی داشته باشم با عنوان "ram 6GB"
وقتی این گونه جست و جو میکنم بم نتیجه را درست نشون میده
select * from ware where name like '%ram%6%'
اما وقتی جای "ram" و جای "6" را با هم عوض میکنم نتیجه ای به من نشون نمیده
یعنی وقتی اینطوری مینوسیم
select * from ware where name like '%6%ram%'
تذکر:علامت"%"پایان هر کلمه وارد شده است.
پیشاپیش ممنون از توجه دوستان
سلام.
دستور Like مثل سایر دستورات سینتکس مشخصی داره :
بیشترین کاربردش زمانیه که یا می خوایم عباراتی رو پیدا کنیم که با یک مقداری شروع یا به پایان می رسن یا شامل اون عبارات باشه (هر چند این تنها کاربردهاش نیست ولی بیشترین استفاده از like همینه).
برای حالاتی که برای شروع یا خاتمه با عبارت مد نظر، ازش استفاده میکنیم با یک % میاد و برای حالتی هم که محل عبارت مد نظر اهمیتی نداره و فقط میخوایم داخل عبارت مورد جستجو باشه از دو % استفاده میشه که در ادامه براتون مثال میزنم :
مثلا در همین مثال خودتون عبارت "ram 6GB" رو در نظر می گیریم.
اگر قصد دارید عباراتی رو پیدا کنید که با کلمه ram شروع میشن :
select * from ware where name like 'ram%'
اگر دنبال عباراتی می گردید که با 6GB به پایان می رسن :
select * from ware where name like '%6GB'
اگر هم در دیتابیس عباراتی مثل "ram kingmax 8GB" دارید و دنبال عباراتی می گردید که کلمه kingmax درونش استفاده شده، از دستور زیر می تونید استفاده کنید :
select * from ware where name like '%kingmax%'
اگر هم دنبال جستجوی خاصی هستید، کامل توضیح بدید که چی می خواید تا بهتر بشه راهنمایی کرد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.