ورود

View Full Version : lمشکل با یک دستور اسکیول



Variable
یک شنبه 26 شهریور 1391, 16:22 عصر
سلام
من اطلاعات یک تیبل رو از تویک فایل خوندم و تو جدول قرار دادم
حالا
من یه دستور اسکیول دارم به شکل زیر

use irancity
select *
from Sheet1$
where city='شیراز'

بعد کولیژن هم Persian_100_CI_AI
و nvarchar() هم هست

مشکل اینجاست که با این دستور اسکیول هیچ سطری باز گردانده نمیشه
درحالیکه تو تیبل اسم شهر شیراز اومده .

احتمالا مشکل شاید سره فارسی و عربی بودن شیراز باشه .
ممکنه کاراکترها تو دیتابیس عربی نوشته شده باشه بعد اون با صفحه کلید فارسی سرچ کنه یا برعکس
نمیدونم
لطفا راهنمایی کنید.باید چیکارش کنم

حمیدرضاصادقیان
دوشنبه 27 شهریور 1391, 07:57 صبح
سلام.
شما Collation رو روی Arabic_Ci_As قرار بدید و بدین شکل جستجو کنید.

use irancity
select *
from Sheet1$
where city=N'شیراز'

مهدی هادیان2
دوشنبه 27 شهریور 1391, 09:15 صبح
بسم الله الرحمن الرحیم
با سلام
آقای صادقیان لطفا توضیح بدید مشکل از کجا بود؟
با سپاس

Variable
دوشنبه 27 شهریور 1391, 13:40 عصر
سلام.
شما Collation رو روی Arabic_Ci_As قرار بدید و بدین شکل جستجو کنید.

use irancity
select *
from Sheet1$
where city=N'شیراز'



متشکرم اقای صادقیان
میشه راهنمایی بفرمایید که چطور میتونم دیتابیس رو تغییر بدم که بدون N و با همون کوئری اسکیول اول که عرض کردم .
کوئری رو اجرا کرد.

چون من یه برنامه exe دارم که با اون کوئری اول . نوشته شده .
و امکان تغییر در برنامه نیست .

حمیدرضاصادقیان
دوشنبه 27 شهریور 1391, 15:57 عصر
ببینید شما با این حرف SQL Server رو متوجه میکنید که داده شما فیلدی از نوع Unicode هست در غیر اینصورت به صورت Unicode ارسال نشده و نتیجه ای برای شما دربرنخواهد داشت.
برای توضیحات تکمیلی پیشنهاد میکنم اینجارو (http://databases.aspfaq.com/general/why-do-some-sql-strings-have-an-n-prefix.html) ببینید.

Variable
دوشنبه 27 شهریور 1391, 16:54 عصر
ممنونم.
من یک برنامه ایی نوشتم که به سادگی کوئری هارو روی دیتابیس پیاده میکرد.
بعد از مدتی اون دیتابیس و اطلاعاتش پاک شد . و دوباره ایجاد شد.

حالا دیگه اون برنامه نمیتونه نتایج اسکیول رو برگردونه . (یعنی همین مشکلی که در بالا گفتم)
الان دیتابیس رو چطور تغییر بدم که مثله قبل بشه . و بتونه بدون نوشتن N هم کار کنه .