PDA

View Full Version : نیم فاصله در کوئری



فؤاد
دوشنبه 21 اردیبهشت 1394, 00:29 صبح
سلام

من میخواهم موقع جستجو بین کلمه "آنها" و "آن‌ها" تفاوت قائل شوم / در واژه اول "آن" و "ها" به هم متصل هستند ولی در واژه دوم بین "آن" و "ها" کاراکتر نیم فاصله وجود دارد.

در حال حاضر بین این دو کلمه تفاوتی وجود ندارد.

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

وضعیت فعلی دیتای من

sql server 2008
Nvarchar Field
Collation Name: Persian_100_CI_AS


با تشکر

SabaSabouhi
دوشنبه 21 اردیبهشت 1394, 08:59 صبح
سلام

من میخواهم موقع جستجو بین کلمه "آنها" و "آن‌ها" تفاوت قائل شوم / در واژه اول "آن" و "ها" به هم متصل هستند ولی در واژه دوم بین "آن" و "ها" کاراکتر نیم فاصله وجود دارد.

در حال حاضر بین این دو کلمه تفاوتی وجود ندارد.

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

وضعیت فعلی دیتای من

sql server 2008
Nvarchar Field
Collation Name: Persian_100_CI_AS


با تشکر

سلام
زمان Windows 3.1 یادمه اسمش Zero Width NonJoiner بود. نمی‌دونم الان چه اسمی داره.
روی صفحه کلید استاندارد فارسی ویندوز با ترکیب Ctrl-Shift-2 می‌تونی این کاراکتر رو وارد کنی.
من خودم چون زیاد استفاده می‌کنم یه کیبورد ساختم که این کاراکتر رو گذاشتم توی Shift-U که راحت‌تر
ازش استفاده کنم. ( درست مثل Windows 3.1 فارسی خود مایکروسافت اگه یادتون بیاد )

براتون می‌فرستم. پس از نصب کافیه تو Control Panel~Keyboard اون رو بجای صفحه کلید اصلی انتخاب کنی.

صبا صبوحی

فؤاد
دوشنبه 21 اردیبهشت 1394, 09:49 صبح
سلام

قبلا از اینکه وقت گذاشتین و به پیام من پاسخ دادین تشکر میکنم ولی....
ظاهرا متوجه سوال و مشکل بنده نشده اید... مشکل من با درج کاراکتر نیم فاصله هنگام جستجو نیست... مشکل من اینجاست که اس کیو ال سرور به این کاراکتر حساسیت نشان نمیدهد... و عملا بود و نبودش در رشته مورد جستجو تفاوتی ندارد و برایش بین "آنها" و "آن‌ها" فرقی نیست.

بعنوان مثال اگر در دیتابیس کلمه "آنها" وجود داشته باشد اگر موقع جستجو چنین کوئری داشته باشم


select * from my_tbl where myfield like N'آن‌ها'


در نتیجه جستجو کلمه "آنها" به چشم میخورد در صورتیکه من دنبال کلمه "آن‌ها" گشته ام...

همین

SabaSabouhi
دوشنبه 21 اردیبهشت 1394, 11:11 صبح
سلام

قبلا از اینکه وقت گذاشتین و به پیام من پاسخ دادین تشکر میکنم ولی....
ظاهرا متوجه سوال و مشکل بنده نشده اید... مشکل من با درج کاراکتر نیم فاصله هنگام جستجو نیست... مشکل من اینجاست که اس کیو ال سرور به این کاراکتر حساسیت نشان نمیدهد... و عملا بود و نبودش در رشته مورد جستجو تفاوتی ندارد و برایش بین "آنها" و "آن‌ها" فرقی نیست.

بعنوان مثال اگر در دیتابیس کلمه "آنها" وجود داشته باشد اگر موقع جستجو چنین کوئری داشته باشم


select * from my_tbl where myfield like N'آن‌ها'


در نتیجه جستجو کلمه "آنها" به چشم میخورد در صورتیکه من دنبال کلمه "آن‌ها" گشته ام...

همین

سلام
پوزش می‌خواهم. اشتباه برداشت کردم.
همین الان مورد شما رو روی یه دیتابیس آزمایش کردم. اما هم‌چنین چیزی ندیدم.
دو سطر با مقدار «آن‌ها» و «آنها» وارد دیتابیس کردم.
* با فرمان SELECT DISTINCT Name دو سطر رو ادغام نکرد
* با فرمان 'آن‌ها' = SELECT * FROM MyTable WHERE Name فقط یک سطر برگرداند
* با فرمان 'آن‌ها' SELECT * FROM MyTable WHERE Name like فقط یک سطر برگرداند

من تو دیتابیس‌ها از Collation 1256 CS AS استفاده می‌کنم.
برای اطمینان یک دیتابیس دیگه با Persian_CS_AS ساختم، و دقیقاً مساله‌ای که شما گفتین رو مشاهده کردم.
اگه می‌خوای این دوتا «آن‌ها» و «آنها» یکی در نظر گرفته نشن، می‌تونی Collation رو عوض کنی به 1256

البته می‌تونی تو Where Clause هم این کار رو انجام بدی و نیاز به تغییر خود دیتابیس نیست


SELECT * FROM Test
WHERE Name = 'آن‌ها'
COLLATE SQL_Latin1_General_CP1256_CI_AS


صبا صبوحی