PDA

View Full Version : سوال: collation ها و تاثیر آن در برنامه



misoft.ir
جمعه 29 آبان 1388, 00:24 صبح
سلام
در تنظیمات دیتابیس گزینه ای هست که مربوط به collation میشود
دوستان راهنمایی کنند که
1 چه فرقی با هم دارند و کدومشون بهتره
مثلا برای عربی یا فارسی گزینه های مختلفی وجود داره

AliRezaPro
جمعه 29 آبان 1388, 10:10 صبح
من اینو دیدم :


What is collation?

Collation refers to a set of rules that determine how data is sorted and compared.
Character data is sorted using rules that define the correct character sequence,
with options for specifying
1) case-sensitivity,
2) accent marks,
3) kana character types and
4)character width.

Case sensitivity

If A and a, B and b, etc. are treated in the same way then it is case-insensitive. A computer treats A and a differently because it uses ASCII code to differentiate the input. The ASCII value of A is 65, while a is 97. The ASCII value of B is 66 and b is 98.

Accent sensitivity

If a and á, o and ó are treated in the same way, then it is accent-insensitive. A computer treats a and á differently because it uses ASCII code for differentiating the input. The ASCII value of a is 97 and áis 225. The ASCII value of o is 111 and ó is 243.

Kana Sensitivity

When Japanese kana characters Hiragana and Katakana are treated differently, it is called Kana sensitive.

Width sensitivity

When a single-byte character (half-width) and the same character when represented as a double-byte character (full-width) are treated differently then it is width sensitive.

misoft.ir
جمعه 29 آبان 1388, 15:33 عصر
سلام
از پاسخ دوست عزیزمون ممنونم
اما هنوز نفهمیدم که کدوم کالکشن برای زبان فارسی مناسبتره
دوستان هر کدوم کار کردند تجربشون رو در اختیار دیگران بذارند
با توجه به مطالب پست قبل چرا وقتی کالکشن رو فارسی میگذاریم ، هنوز ي عربی رو ثبت میکنه؟

saeeedft
جمعه 29 آبان 1388, 18:56 عصر
اقا شما کدوم collation رئو انتخاب میکنی؟

misoft.ir
جمعه 29 آبان 1388, 19:32 عصر
Persian_100_CI_AS

h.jaza
جمعه 29 آبان 1388, 21:33 عصر
Persian_100_CI_AS

به هیچ وجه، این کولیشن با فارسی مشکل داره...
بهترین کولیشن برای فارسی یکی Arabic_Bin2 و یکی Arabic_CI_AS هستش.
کولیشن های غیر از این هر کدوم با بعضی کاراکترا مشکل دارن...

misoft.ir
شنبه 30 آبان 1388, 06:31 صبح
سلام
میتونید دلیل انتخابتون رو هم بیان کنید؟

Mohagheghi
شنبه 30 آبان 1388, 08:25 صبح
Arabic_CI_AS:
به جا مانده از دوران قبل از SQL Server 2008


Persian_100_CI_AS:

از 2008 به بعد


توضيح :

اگر ديتابيس خود را در طي چند سال از يك نگارش به نگارشي ديگر يا از يك سرور به سروري ديگر منتقل كرده باشيد، به احتمال زياد به مشكلات Collations هم برخورده‌ايد. يكي از فيلدها Arabic_CI_AS است (بجا مانده از دوران قبل از SQL Server 2008) در يك جدول و در جدولي ديگر فيلدي تازه‌اي با Collation از نوع Persian_100_CI_AS تعريف شده است. Collations نحوه ذخيره سازي و مقايسه رشته‌ها را كنترل مي‌كنند. زمانيكه يك جدول جديد را در SQL Server ايجاد مي‌كنيم، اگر Collation فيلدها به صورت صريح ذكر نگردند، بر مبناي همان Collation پيش فرض ديتابيس تعريف خواهند شد.
بنابراين اگر پس از استفاده از SQL Server 2008 و تنظيم Collation پيش فرض ديتابيس به Persian_100_CI_AS ، به اين موارد دقت نكنيم، دير يا زود دچار مشكل خواهيم شد.
عمليات مرتب سازي با وجود تداخلات Collations مشكل ساز نمي‌شود (خطايي دريافت نمي‌كنيد)، اما ممكن است الزاما صحيح عمل نكند. مشكل از آنجايي آغاز مي‌شود كه قصد داشته باشيم داده‌ها را مقايسه كنيم يا join ايي بين اين دو جدول با فيلدهاي ناهمگون از لحاظ Collation ايجاد نمائيم. در اين حالت حتما خطاهاي تداخل Collation را دريافت كرده و كوئري‌هاي ما اجرا نخواهند شد.
Cannot resolve collation conflict for equal to operation


پس بهتر است از يك نوع در كارهايتان استفاده كنيد

البته اگر به اين مشكل دچار شديد نگران نباشيد

بلكه راه حل دارد

بگيد تا بهتون بگم چي كار كنيد



البته در اينجا از دوست خوبمون آقاي وحيد نصيري خيلي تشكر مي كنم

كه اين مطالب رو بهم آموزش داده اند تا من بتوانم آنها را منتقل كنم

يا علي

misoft.ir
شنبه 30 آبان 1388, 09:17 صبح
سلام
ممنونم
من ورودی کاربر را با کد تصحیح میکنم یعنی اگر ی عربی تایپ کرد، اون رو با ی فارسی جایگزین میکنم
اما در جست جو روی همون دیتابیس وقتی حرف ی را تایپ میکنم دیگه جست جو کار نمیکنه
مشکل رو با گذاشتن N قبل از عبارت جست و جو حل کردم ولی دنبال راه حل اصولی این مشکل میگردم

h.jaza
شنبه 30 آبان 1388, 09:26 صبح
@Mohagheghi (http://barnamenevis.org/forum/member.php?u=23445)
اولا من خودم می دونم که جفته Arabic_bin2 و Arabic_CI_AS توی SQL 2005 معرفی و اضافه شدن، اما تجربه ی شخصی من نشون داد که کولیشن های فارسی Persian... اساسا گیر دارن و مشکل سازن و نمیشه باهاشون درست کار کرد و پس از تحقیقات و بررسی های فراوان به این دو کولیشن که سازگار ترین کولیشن ها برای زبان فارسی هستن، رسیدم که البته مورد تائید اساتید بزرگ هم هستن و اونها هم از یکی از این دو استفاده می کنن...

اما در مورد مسئله ی ترکیبات و Query های پیچیده و جور وا جور هم باید بگم، من تا حالا به هیچ وجه به مشکلی بر نخوردم توی کار با یکی از این دو کولیشن...

و در آخر هم مسئله ی تعدد کولیشن رو متوجه نمیشم، یعنی چی؟؟؟ چطور میشه که چند تا کولیشن داشته باشیم؟؟؟ میشه بیشتر توضیح بدین؟ چون تا اونجایی که من می دونم کولیش همواره یکیه و برای کل دیتابیس هم هست نه برای یک تیبل یا فیلد خاص که اساسا احتمال تداخل کولیشن ها بخواد پیش بیاد...