यह एक सीमा ASCII
कार्य है। documentation, ASCII
के अनुसार:
एक चरित्र अभिव्यक्ति की वाम-पंथी चरित्र के ASCII कोड मान देता है।
हालांकि, आपके प्रश्न के पात्र एक से अधिक बाइट से बने हैं। ऐसा लगता है कि ASCII
केवल एक बाइट पढ़ सकते हैं।
जब आप N
उपसर्ग के बिना स्ट्रिंग शाब्दिक रूप में इन वर्णों का उपयोग, वे सिंगल-बाइट वर्ण माना जाता है। निम्न क्वेरी से पता चलता है कि एसक्यूएल सर्वर जब वे ठीक से मल्टी-बाइट के रूप में चिह्नित कर रहे हैं Arabic_CI_AS मिलान में बराबर के रूप में इन पात्रों का इलाज नहीं करता है:
:
SELECT CASE WHEN 'ي' COLLATE Arabic_CI_AS <> 'ی' COLLATE Arabic_CI_AS
THEN 1 ELSE 0 END AS are_different_ascii,
CASE WHEN N'ي' COLLATE Arabic_CI_AS <> N'ی' COLLATE Arabic_CI_AS
THEN 1 ELSE 0 END AS are_different_unicode
निम्न क्वेरी बाइट्स कि पात्रों को बनाने से पता चलता
SELECT CAST(N'ي' COLLATE Arabic_CI_AS as varbinary(4)),
CAST(N'ی' COLLATE Arabic_CI_AS as varbinary(4)),
CAST('ي' COLLATE Arabic_CI_AS as varbinary(4)),
CAST('ی' COLLATE Arabic_CI_AS as varbinary(4))
हालांकि, यहां तक कि जब आप यूनिकोड के रूप में वर्ण निशान, ASCII
समारोह में एक ही मान देता है क्योंकि यह केवल एक बाइट पढ़ सकते हैं:
SELECT ASCII(N'ي' COLLATE Arabic_CI_AS) , ASCII(N'ی' COLLATE Arabic_CI_AS)
संपादित टीटी के रूप में। बताते हैं, इन पात्रों ASCII कोड तालिका में एक प्रविष्टि नहीं है।
स्रोत
2016-03-10 11:20:26
यह मेरा सवाल भी – Behzad
जिस तरह से आप btw का चयन कर रहे है , पहले चरित्र के ASCII मूल्य प्राप्त करता है। वे पात्र निश्चित रूप से [ASCII कोड पृष्ठ] (https://en.wikipedia.org/wiki/ASCII) में नहीं हैं। यह एक अमेरिकी मानक है और इसमें बहुत कम प्रतीकों हैं। अरबी प्रतीकों का हिस्सा नहीं हैं। –