ورود

View Full Version : سوال: مشکل جستجوی عبارت فارسی در قسمت where



alireza323
شنبه 26 مرداد 1387, 21:27 عصر
من میخوام یه query بنویسم که تو قسمت where یه کلمه فارسی رو قرار بدم،ولی با وجود اینکه کلمه مورد نظرم تو جدولم وجود داره ولی query چیزی برنمی گردونه،عبارتی که تو query نوشتم به صورت زیر :

select type
from product
where name like 'شیر'

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

KambizZandi
شنبه 26 مرداد 1387, 21:52 عصر
1- شما بايد قبل و بعد از عبارت از % استفاده کنيد:

select type
from product
where name like '%شیر%'
2- کاراکترهاي "ي" و "ک" معمولا مشکل ايجاد ميکنن. بايد به اونا توجه کنيد

رضا جاسبی
شنبه 26 مرداد 1387, 22:28 عصر
قبل از کلمه تون یک حرف N بگذارید. 'شیر'like N . البته همانطور که کامبیز گفت Like رو با % بکار ببرید. در واقع این دستور شما Like رو به = تبدیل کرده است.
اون نکته دوم کامبیز هم مهمه. یعنی ی و ک کدهای متفاوت دارند که گاه مشکل ایجاد می کنه. اما اگر مقدار موجود در دیتابیس رو کپی کنی با گذاشتن N قضیه حل میشه.

alireza323
شنبه 26 مرداد 1387, 23:41 عصر
خیلی ممنون،واقعا راهنمایی خوبی بود

sarkhosh
دوشنبه 28 مرداد 1387, 20:50 عصر
من وقتی % رو نمیذارم میشه = ...! اگه دو تا % رو بذاریم یعنی قبل و بعد از کلمه شیرهر چیزی باشه خبری نیست!
اینجوری کلمات دیگری هم پیدا می کنه مثل مشیری;((

KambizZandi
دوشنبه 28 مرداد 1387, 21:44 عصر
ميشه يکبار ديگه اين پست آخري رو بگيد جوري که جمله ها بيشتر قابل درک باشه
من سوادم کمه نفهميدم

sarkhosh
دوشنبه 28 مرداد 1387, 23:47 عصر
دوست عزیز من بعد از مدتها دوری از وطن به ایران امدم از این بابت کمی جمله بندی و بکار گیری کلماتم گنگ هست ...ببخشبد

ببینید وقتی که اینو بکار می بریم


like N'شیر'

فقط به دنبال کلمه شیر می گرده اما


like N'%شیر'

دستور بالا فقط کلمه شیر رو بر نمی گردونه کلماتی مانند بشیر مشیر را نیز بر می گردونه
[
حالا اگر علاوه بر ابتدا ، انتهای شیر هم % بگذاریم کلماتی رو کاوش می کنه که شیر توش باشه و قبل و بعدش هر چیزی که می خواد باشه...
امیدوارم منظورمو رسونده باشم

KambizZandi
سه شنبه 29 مرداد 1387, 00:35 صبح
آره خب
اگر % رو اولش بذاريد يعني هر چيزي که با "شير" شروع بشه
اگر آخرش بذاريد يعني هرچي که به "شير" ختم بشه
اگر هر دوشو بذاريد يعني هرچيزي که توش "شير" داره!!! (مثل جنگل)

sarkhosh
سه شنبه 29 مرداد 1387, 01:00 صبح
نه بازم اشتباه گفتید:افسرده:
در هر حال هدفم این بود که بگم % گذاشتن به معنی مساوی نیست

KambizZandi
سه شنبه 29 مرداد 1387, 09:56 صبح
معلومه که % معناي = رو نميده
% مثل * توي Dos هست
يعني هر چيزي (از 0 تا n کاراکتر)

mohaseb
دوشنبه 14 اردیبهشت 1388, 22:19 عصر
قبل از کلمه تون یک حرف N بگذارید. 'شیر'like N . البته همانطور که کامبیز گفت Like رو با % بکار ببرید. در واقع این دستور شما Like رو به = تبدیل کرده است.
اون نکته دوم کامبیز هم مهمه. یعنی ی و ک کدهای متفاوت دارند که گاه مشکل ایجاد می کنه. اما اگر مقدار موجود در دیتابیس رو کپی کنی با گذاشتن N قضیه حل میشه.
سلام آقای جاسبی عزیز
ممنون از راهنماییتون

meysam_pro
سه شنبه 15 اردیبهشت 1388, 09:12 صبح
این مشکل از Collation هست که عربی هست.
مشكل ي و ك فارسي و عربي در يك ديتابيس اس كيوال سرور (http://vahidnasiri.blogspot.com/2009/01/blog-post_13.html)
عالی توضیح داده

meysam_pro
سه شنبه 15 اردیبهشت 1388, 09:13 صبح
در ضمن آوردن N قبل از رشته به MSDE میگه رشته رو به صورت یونیکد بفرست