PDA

View Full Version : مشکل جستجوی حرف "ی" در داده های بانک بعد از اتصال به vb.net



hqsoroush
جمعه 28 مرداد 1390, 13:01 عصر
با سلام.
من درحال طراحی برنامه ای بودم که متوجه شدم جستجوی کلمه ای مثل "موبایل" مشکل داره.تا زمانیکه کلمه "موبا" را تایپ میکردم نتایج رو نشونم میداد ولی همین که "ی" بهش اضافه میشد نتیجه ای رو نشونم نمیداد.:متعجب:
قبل از این کلا فارسی رو جستجو نمیکرد تا اینکه توی sql server به قسمت properties بانکم رفتم و از تب Option گزینه Collection رو روی Arabic_100_CI_AS_KS_WS گذاشتم و وقتی دیدم "ی" رو مشکل داره دوباره اون رو بهPersian_100_CI_AS_KS_WS تغییر دادم ولی مشکل حل نشد.:گریه:

لطفا راهنمایی کنید:قلب:
مرسی عزیزان

Galawij
جمعه 28 مرداد 1390, 17:39 عصر
این لینک (http://barnamenevis.org/showthread.php?295709-بهترین-روش-جستجوی-عبارت-فارسی-در-SQlServer)را مطالعه کنید. دستورات پست 6 و 8 را داخل یک Query بنویسید و اجرا کنید، درست می شه.

hqsoroush
جمعه 28 مرداد 1390, 21:39 عصر
این لینک (http://barnamenevis.org/showthread.php?295709-بهترین-روش-جستجوی-عبارت-فارسی-در-SQlServer)را مطالعه کنید. دستورات پست 6 و 8 را داخل یک Query بنویسید و اجرا کنید، درست می شه.

واقعا چرا اینطوریه؟مگه نگفتند توی SQL SERVER 2008 مشکل زبان فارسی بدلیل قرار دادن Collection فارسی توسط مایکروسافت حل شده؟پس چرا مشکل من از این طریق حل نشد ؟

vbhamed
چهارشنبه 02 شهریور 1390, 14:22 عصر
سلام

مشكل از استاندارد صفحه كليدها ويندوزهايي كه يا اونها اطلاعات وارد ديتابيس شده هم مي‌تونه باشه
در بعضي استانداردها هنگام تايپ، ي و در بعضي ی تايپ ميشه و به همين صورت در ديتابيس ذخيره ميشه
بنابراين مشكل از Collection زبان فارسي نيست
اگر يكبار اطلاعات ديتابيس درست بشه يعني مثلا همه ي ها به ی تبديل بشه يا برعكس (البته طبق استاندارد صفحه كليد خودتون) اونموقع ديگه مشكلي نداريد
مي تونيد هم يك SP بنويسيد و اين تبديل رو اتجام بديد ولي خب سرعتتون پايين مياد

به نظر من بهترين راه اينه كه يك استاندارد براي خودتون در نظر بگيريد و هنگام ثبت اطلاعات در در ديتابيس ي ها رو تبديل به ي استاندارد خودتون كنيد و بعد ثبتش كنيد
براي جستجو هم ابتدا در عبارت تايپ شده جهت جستجو همه ي ها رو به استاندارد خودتون تبديل كنيد بعد در دستوراتي مثل Select استفاده كنيد
البته اين مشكل براي حرف (ك ک) هم برقراره چون در استاندارد عربي به صورت ك و در استاندارد فارسي به صورت ک هست

hqsoroush
پنج شنبه 03 شهریور 1390, 09:42 صبح
به نظر من بهترين راه اينه كه يك استاندارد براي خودتون در نظر بگيريد و هنگام ثبت اطلاعات در در ديتابيس ي ها رو تبديل به ي استاندارد خودتون كنيد و بعد ثبتش كنيد
سلام دوست من.
مشکل اینجاست که من در این زمینه تازه واردم:خجالت: و واقعا نمیدونم چه استانداردی باید تعریف کنم.:ناراحت:
دوست خوبم galavezh (http://barnamenevis.org/member.php?60171-galavezh) یه لینک معرفی کرد ولی متاسفانه هر کاری کردم نفهمیدم میخواد چی بگه و در نهایت میخواد چکار کنه.:گیج:
آیا باید از توابع صفحه کلید و کد های اسکی و اینجور چیز ها برای تبدیل ي به ی استفاده کنم؟

Galawij
پنج شنبه 03 شهریور 1390, 10:17 صبح
دوست خوبم galavezh (http://barnamenevis.org/member.php?60171-galavezh) یه لینک معرفی کرد ولی متاسفانه هر کاری کردم نفهمیدم میخواد چی بگه و در نهایت میخواد چکار کنه.:گیج:
دوست عزیزم لینکی که من به شما معرفی کردم، با اجرای دستوراتش همه ی و ک ها را به یک شکل درمی آورد. یعنی از فرم فارسی به عربی تبدیل می کرد. که در این صورت در حال حاضر با اجرای آن Query بانک اطلاعاتی شما یکنواخت می شد.در حقیقت من این قسمت توضیحات دوستمون VBHamed را براتون گذاشته بودم:

اگر يكبار اطلاعات ديتابيس درست بشه يعني مثلا همه ي ها به ی تبديل بشه يا برعكس (البته طبق استاندارد صفحه كليد خودتون) اونموقع ديگه مشكلي نداريد
مي تونيد هم يك SP بنويسيد و اين تبديل رو اتجام بديد ولي خب سرعتتون پايين مياد

elham1985
یک شنبه 10 اردیبهشت 1391, 15:16 عصر
با سلام.
منم اين مشكل رو دارم. حالا ميخوام موقع Insert تمام "ي" هاي عربي رو به فارسي تبديل كنم.اين sp رو نوشتم:

create procedure Change(@name nchar(10))
as
insert into dbo.test_tbl(tname)
values(replace(@name,'ي','ی'))


درسته؟ حالا چه جوري ميتونم ك و ة رو هم به اين sp اضافه كنم؟

moghanidehabadi
شنبه 15 شهریور 1399, 00:05 صبح
شما اگه بانک اطلاعاتی که استفاده میکنید Sql Server هست میتونید داخل کد Sql بعد از Like و قبل تک کوتیشن یه دونه N بزارید دیگه تو جستوجو ها هرچی رو باشه نشون میده و همینظور قبل از دستور Insert یا Update هم میتونید استفاده کنید که داده هاتون با
Select Name From TableTest Where Name Like N'%حمید%'