PDA

View Full Version : مشکل گرفتن query با حرف 'ی' ؟



sasan_vm
شنبه 07 بهمن 1385, 19:48 عصر
سلام

یک database در SQL-Server دارم که هر query که شامل حرف 'ی' باشد را نمی تواند
شناسائی کند. بعنوان مثال:


1 - select * from tbPerson where name like '%علی%'
2 - select * from tbPerson where name like '%عل%'


در query 1 با اینکه چند record شامل اسم 'علی' هستند نتیجه تهی است ولی در
query 2 همه اسامی کا شامل 'عل' هستند منجله اسامی 'علی' انتخاب می شوند.

تصویر ضمیمه نتایج 2 query را نشان میدهد !

اَرژنگ
شنبه 07 بهمن 1385, 20:12 عصر
شاید برایه اینکه از 'ىٰ عربی استفاده شده ''ی'. یکی از جوابهایی را که برمیگرادنه کپی و پیست کنید در سلکت استفاده کنید، ببینید جواب میده و یا نه.

arshia_
یک شنبه 08 بهمن 1385, 08:02 صبح
پیشنهاد می کنم با کمک یه فرمان update در بانک تمام ی هایی فعلی رو که مشکلدار هستند با مقدار ی درست جایگزین کنید
یا در موقع گرفتن مقادیر رشته ای ابتدا کارکتر ی رو تصحیح کنید و سپس دستور رو اجرا کنید

ali_kolahdoozan
یک شنبه 08 بهمن 1385, 08:18 صبح
یک فارسی ساز ساده نصب کنید

DonetKarvb
یک شنبه 08 بهمن 1385, 10:52 صبح
یک فارسی ساز ساده نصب کنید
وقتی که الان به دو صورت ذخیره شده این فارسی ساز کار نمیکند.
زمانی که برنامه شما web Base باشد چی؟ آنگاه بازم این فارسی ساز به کار خواهد آمد؟
فکر کنم عرشیا بهترین راه رو برای جلوگیری از این مشکل گفته باشه.
و آرژنگ هم بهترین راه حل برای مشکل فعلی..

ali_kolahdoozan
یک شنبه 08 بهمن 1385, 11:40 صبح
توی وب که unicode رو ست میکنیم مشگل حله .

اَرژنگ
یک شنبه 08 بهمن 1385, 12:54 عصر
وقتی که الان به دو صورت ذخیره شده این فارسی ساز کار نمیکند.
زمانی که برنامه شما web Base باشد چی؟ آنگاه بازم این فارسی ساز به کار خواهد آمد؟
فکر کنم عرشیا بهترین راه رو برای جلوگیری از این مشکل گفته باشه.
و آرژنگ هم بهترین راه حل برای مشکل فعلی..
همانطوره که جناب کلاهدوزان گفتند از یونیکد استفاده کنید.
من راه حل پشینهاد نکردم، arshia_ (http://barnamenevis.org/forum/member.php?u=3024) راه حل خوبی گفتند، فقط میتونم بهش اضافه کنم که قبل از اینسرت ی را با ی عوض کنید.

DonetKarvb
یک شنبه 08 بهمن 1385, 23:21 عصر
توی وب که unicode رو ست میکنیم مشگل حله .
وب و یا ویندوز چه ربطی به دیتابیس دارد؟
این مشکل همچنان در یونیکد هم وجود دارد یه نگاهی به تاپیک زیر بیندازید
http://barnamenevis.org/forum/showthread.php?t=58643

sasan_vm
چهارشنبه 11 بهمن 1385, 08:06 صبح
سلام

با تشکر از دوستان برای راهنمائی ها و پاسخ هایشان، من مشکلم را باتبدیل کد فارسی به
عربی حل کردم و نتایج بررسی هایم را برایتان مینویسیم شاید مفید واقع شود:

برای حرف 'ی' 12 کد در جدول unicode وجود دارد (در صورت شمردن حروف کوچک و .. بیشتر هم میشود) ، database من روی web است ولی ما دو برنامه ورود اطلاعات داریم یکی تحت
web و دیگری win32 جالب اینجاست که در برنامه win32 حرف 'ی' با کد 1610 ذخیره میشود
('ی' عربی) ولی در برنامه Web کد 1740 ('ی' فارسی) و جالبتر اینکه اگر در رشته ای شما
'ی' فارسی داشته باشید با کد 1740 به هیچ عنوان SQL-Server 2000 آن را شناسائی نمیکند و با تبدیل کد 1740 به 1610 مشکل حل میشود. البته شاید این مشکل در SQL-Server 2005 حل شده باشد (تست نکرده ام).

taheri-ali
چهارشنبه 11 بهمن 1385, 08:31 صبح
این مشکل در sql وجود دارد البته بعضی وقتها با حرف "ک" هم این مشکل پیش میاد یه موقعی من خیلی دنبالش بودم که راه حل اونو بدست بیارم اما نشد ولی بعضی وقتها که جای "ی" دوباره تایپ می کنید درست می شه فکر می کنم مربوط به فونتهای فارسی باشه

shayan_delphi
جمعه 13 بهمن 1385, 08:30 صبح
از داخل برنامه که یک کلمه مثل "علی" را هم در بانک ذخیره می کنیم بعد در کوئری خود sql
پیدا نمی کنه!!!!
سر جمع بحث چی شد؟راه حل برای application ؟

Happy_davood
جمعه 13 بهمن 1385, 09:54 صبح
البته 4 تا کاراکتر این مشکل رو خواهند داشت : ی - ک - ء و الف حمزه دار .
من خودم یه تابع نوشتم که رشته رو میگیره و همون رشته رو بصورت اصلاح شده پس می ده و همهیشه قبل از ذخیره هر رشته ای در DB این تابع رو فراخوانی می کنم . یعنی هیچ وقت کاراکتر اشتباه وارد DB نمیشه . موقع جستجو هم رشته وارد شده توسط کاربر رو با همین تابه اصلاح می کنم و بعد جستجو می کنم . با این کار دیگه نباید نگران نوع ویندوز و کدینگ سیستم بود .

اَرژنگ
جمعه 13 بهمن 1385, 09:59 صبح
سلام

با تشکر از دوستان برای راهنمائی ها و پاسخ هایشان، من مشکلم را باتبدیل کد فارسی به
عربی حل کردم و نتایج بررسی هایم را برایتان مینویسیم شاید مفید واقع شود...:
.

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

Happy_davood
جمعه 13 بهمن 1385, 10:10 صبح
ضمناً باید دقت کنید اگه مقادیری رو روز اول خودتون بصورت دستی وارد DB می کنید ممکنه بعداً براتون مشکل ساز بشه . بهتر هست این مقادیر رو هم با روش بالا و از طریق برنامه وارد کنید .

DonetKarvb
جمعه 13 بهمن 1385, 23:08 عصر
با سلام
چرا از یک trigger برای اینکار استفاده نمیکنی؟

payam_skandari
پنج شنبه 30 فروردین 1386, 13:18 عصر
البته 4 تا کاراکتر این مشکل رو خواهند داشت : ی - ک - ء و الف حمزه دار .
من خودم یه تابع نوشتم که رشته رو میگیره و همون رشته رو بصورت اصلاح شده پس می ده و همهیشه قبل از ذخیره هر رشته ای در DB این تابع رو فراخوانی می کنم . یعنی هیچ وقت کاراکتر اشتباه وارد DB نمیشه . موقع جستجو هم رشته وارد شده توسط کاربر رو با همین تابه اصلاح می کنم و بعد جستجو می کنم . با این کار دیگه نباید نگران نوع ویندوز و کدینگ سیستم بود .
دوستای عزیز توجه داشته باشن اگر قرار بود همین سایت برنامه نویس واسه ذخیره پستها اول اونا رو اصلاح کنه .که دیگه ما نمیتونستیم برای ادای مطلبمون دو جور ک و دو جور ی بنویسیم.باید راه حل دیگه ای داشته باشه.
استاد ثباتی باید لطف کنن راه حل ارایه کنن.
همگی ممنون میشیم.