نمایش نتایج 1 تا 15 از 15

نام تاپیک: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

  1. #1

    Question چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    سلام

    یه مشکل عجیب :

    دستور select ای که نوشتم رو بعضی اسمها جواب نمیده!!؟؟؟؟خالی جواب میده

    مثلا رو این اسمها جواب نمیده:
    SELECT namelig, team, tedadbazi, bord, mosavi, bakht, golezade, golekhorde, tafazolegol, emtiaz  FROM league_team WHERE namelig='اول ایران' and team='پرسپولیس'


    اما رو اینا جواب میده!!!
    SELECT namelig, team, tedadbazi, bord, mosavi, bakht, golezade, golekhorde, tafazolegol, emtiaz  FROM league_team WHERE namelig='اول ایران' and team='مس'


    دلیلش چیه؟؟

  2. #2
    کاربر تازه وارد آواتار Jozef
    تاریخ عضویت
    دی 1388
    محل زندگی
    تهران - اصفهان
    سن
    40
    پست
    94

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

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

  3. #3

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    دوست عزیز نامهای فارسی که در شرط استفاده میکنین رو از داخل خود بانک یه نمونه کپی و در کد بالا قرار بدین ببینین مشکل حل میشه یا نه.
    این کار رو هم انجام دادم اما باز هم نشد!!
    انگار به بعضی اسمها جواب نمیده!!

    چه دلیلی میتونه داشته باشه؟؟

  4. #4

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    قبل از رشته هایی که از حروف فارسی تهیه شدند از کاراکتر N استفاده کن بطور مثال:
    select * from table_name where team = N'سپاهان'

  5. #5

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    قبل از رشته هایی که از حروف فارسی تهیه شدند از کاراکتر N استفاده کن
    ممنون.این کار رو انجام دادم و تقریبا مشکلم حل شد..
    حالا موضوع جالب اینه که با قرار دادن کاراکتر N بعضی از query هام که قبلا جواب میداد حالا جواب نمیده!!!
    این قبلا جواب میداد:
    select distinct  serial from formekarbar where namemosabeghe='پارسیان '


    اما حالا که N قرار دادم جواب نمیده:
    select distinct  serial from formekarbar where namemosabeghe=N'پارسیان '


    باید چیکار کنم؟
    اصلا این کاراکتر N موضوش چی هست؟

  6. #6

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    N برای حروف Unicode استفاده میشه که اول کلمه ی National (ملی) است.

    این کد را امتحان کنید ببینین جواب می ده یا نه (یک کاراکتر space بعد از کلمه وجود داره اونو حذف کردم، در ضمن داده هایتان را دقیق بررسی کنید ببینید مقادیر ستون مرتبط در بانک چگونه ذخیره شدند اصلا وجود دارند یا نه ...)
    select distinct  serial from formekarbar where namemosabeghe=N'پارسیان'

  7. #7

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    این کد را امتحان کنید ببینین جواب می ده یا نه (یک کاراکتر space بعد از کلمه وجود داره اونو حذف کردم، در ضمن داده هایتان را دقیق بررسی کنید ببینید مقادیر ستون مرتبط در بانک چگونه ذخیره شدند اصلا وجود دارند یا نه ...)
    'پارسیان' رو داره از querystring که از دیتابیس انتخاب شده میخونه.دستی ننوشتم که بخواد اشتباه تایپی باشه.
    بله،مقادیر وجود دارند.گفته بودم که بدون کاراکتر N جواب میده.!!!

    یک مسئله ای که هست اینه : وقتی که میخواد از querystring بخونه خودش در query کاراکتر N رو قرار میده.که بعضی جاها درست جواب میده وبعضی جاها هم جوابی برنمیگردونه!!

  8. #8

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    ببين اول اينكه كه معمولا براي رشته از = استفاده نميكنن.از like استفاده ميشه.
    حالا تو بيا براي اينكه هر دو سري را بياره اون مدلي كه خودت نوشته بودي را با اون نوعي كه دوستمون راهنمايي كردن(با N) را با هم به صورت دو شرط با OR بنويس ببين چي ميشه.

  9. #9

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    حالا تو بيا براي اينكه هر دو سري را بياره اون مدلي كه خودت نوشته بودي را با اون نوعي كه دوستمون راهنمايي كردن(با N) را با هم به صورت دو شرط با OR بنويس ببين چي ميشه.
    جالب اینه که یه select ای که قبلا جواب میداد الان رو هیچکدوم از حالتهای پایین جواب نمیده:

    SELECT namelig, team, tedadbazi, bord, mosavi, bakht, golezade, golekhorde, tafazolegol, emtiaz  FROM league_team WHERE namelig=N'اول ايران'AND team=N'پرسپوليس'


    SELECT namelig, team, tedadbazi, bord, mosavi, bakht, golezade, golekhorde, tafazolegol, emtiaz  FROM league_team WHERE namelig='اول ايران'AND team='پرسپوليس'
    آخرین ویرایش به وسیله bamzi software : جمعه 21 اسفند 1388 در 14:18 عصر

  10. #10

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    دیتابیست را با CI_AS collation نصب کردی؟ احتمالا یا از دیتابیس یا از ویندوزته.
    با like هم امتحان کن.

  11. #11

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    با like هم امتحان کن.
    بازم جواب نداد:
    select distinct  serial from formekarbar where namemosabeghe like N'پارسیان '


    دیتابیست را با CI_AS collation نصب کردی؟ احتمالا یا از دیتابیس یا از ویندوزته.
    یعنی حالا باید چیکار کنم؟
    با حروفی مشکل نداره،مثل 'ی'..
    چون جاهای دیگه که تو شرط همین کلمه بوده جواب داده،فرقش اینه که ایندفعه داره از یک جدول دیگه select می کنه

  12. #12
    کاربر دائمی آواتار علیرضا حسن زاده
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تــــــــــــــــــــــــــبریز
    پست
    897

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    با سلام خدمت دوست عزیز
    به احتمال زیاد اطلاعات دیتا بیس شما تو یه ویندوز دیگه وارد شده که از کیبورد فارسی استفاده می کرده یا برعکس سیستم شما از کیبورد فارسی استفاده می کنه
    اون طوری هم که من متوجه شدم تو اکثر جستجو های شما حرف ی وجود داره:
    شما می تونید کل اطلاعات دیتابیس رو با حروف خودتون جایگذاری کنید تا مشکلی در جستجو پیش نیاد یا تو خود برنامه وقتی کوئری رو ایجاد کردین حروف ک و ی رو به صورتی که در پایگاه داده نوشته شده Replace کنید و بعد کوئری رو اجرا کنید من همین مشکل رو داشتم برای تست این هم که مشکل از این کاراکترهاس می تونی قسمتی از کلمه که بدون حرف ی باشه با عملگر لایک جستجو کنی اگه جواب داد مشکل از همین کیبوردهای فارسی که واسه ویندوز ساختن مثلا می تونی برای حستجوی پارسیان فقط پارس رو بزنی اون هم به صورت Like N'%پارس%' که اگه پارسیان رو در جواب نمایش بده مشکل با گفته های بالا حل میشه
    موفق باشد

  13. #13

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

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

    برای تست این هم که مشکل از این کاراکترهاس می تونی قسمتی از کلمه که بدون حرف ی باشه با عملگر لایک جستجو کنی اگه جواب داد مشکل از همین کیبوردهای فارسی که واسه ویندوز ساختن مثلا می تونی برای حستجوی پارسیان فقط پارس رو بزنی اون هم به صورت Like N'%پارس%' که اگه پارسیان رو در جواب نمایش بده مشکل با گفته های بالا حل میشه
    تست کردم،همین طور که گفتین بوده


    اون طوری هم که من متوجه شدم تو اکثر جستجو های شما حرف ی وجود داره:
    شما می تونید کل اطلاعات دیتابیس رو با حروف خودتون جایگذاری کنید تا مشکلی در جستجو پیش نیاد یا تو خود برنامه وقتی کوئری رو ایجاد کردین حروف ک و ی رو به صورتی که در پایگاه داده نوشته شده Replace کنید و بعد کوئری رو اجرا کنید
    اگه میشه این قسمت رو دقیقتر توضیح بدین،ممنون میشم

  14. #14
    کاربر دائمی آواتار علیرضا حسن زاده
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تــــــــــــــــــــــــــبریز
    پست
    897

    Smile نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    نقل قول نوشته شده توسط bamzi software مشاهده تاپیک
    اگه میشه این قسمت رو دقیقتر توضیح بدین،ممنون میشم
    برای این کار دوتا راه دارین:

    1- تو برنامه ای که نوشتین حروف ی رو با ي و ک رو با ك جایگزین کنی(به تفاوت حروف دقت کن ی فارسی با ي عربی تفاوت داره به دو نقطه زیرش توجه کن واسه ک هم همین طور) حالا چجوری جایگزاری رو انجام بدی به خودت مربوطه مثلا می تونی رشته ای رو که حاوی دستورات SQL هست رو توسط تابع Replace کلاس String استفاده کنی و کاراکترها رو قبل از ارسال به SQL سرور عوض کنی مزیت این روش اینه که تغییری تو دیتابیس نمیدی البته این جایگذاری رو برای دستورات Insert و Update هم باید انجام بدی تا اطلاعات پایگاه دادت از نظم خارج نشه و هرکدوم با یه کدی نمایش داده نشن
    2-روش دوم هم اینه که کل فیلدهای رشته ای پایگاه د اده رو که روشون جستجو انجام میدی رو با کاراکترهای فارسی یا اگه فارسی بودن با عربی جایگزین کنی برای این کار هم می تونی از دستورات زیر استفاده کنی:

    UPDATE نام جدول SET
    نام فیلد=Replace(نام فیلد,N'ی',N'ي')
    برای ک هم همین طور.
    هر کدوم از روش های مزایا ومعایب خودشون رو دارن که اون هم برمیگرده به اینکه کاربر از چه صفحه کلیدی برای وراد کردن یا جستجوی اطلاعات استفاده می کنه(خیلی صفحه کلید گفتم منظورم برنامه صفحه کلید هست یه فایل DLL تو پوشه System32 ویندوز نه خود صفحه کلید فیزیکی البته ببخشید شما خودتون استادین واسه اونایی که شاید بعدا بیان ببینن گفتم)

    اگه بازم مشکلی داشتین در حد توان در خدمتیم
    موفق باشید

  15. #15

    نقل قول: چرا دستور select ام رو بعضی اسمها جواب نمیده؟

    ممنون از راهنمایی شما دوست عزیز

    من چون مقداری موضوع برام پیچیده شده می خوام طوری که متوجه شدم رو بگم.شما بفرمایید درسته یا نه:

    دیتا بیس روی هاست هست و برنامه صفحه کلید سیستم هاست فارسی هست.
    کاربر دیتاها رو از سیستمی وارد می کنه که برنامه صفحه کلید اون عربیه.
    حالا وقتی select رو سیستم هاست اجرا میشه به خاطر تضاد کد حروف برنامه صفحه کلیدها دستور select اجرا نمیشه. این درسته؟

    اگه این درسته پس من فقط کافیه موقع insert و update حروف عربی رو به فارسی تبدیل کنم.درسته؟یا حتما موقع select هم باید کاری انجام بدم؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •