2015-06-16 8 views
7

दोनों फारसी (बाएं भाषा के लिए एक सही) और अंग्रेजी युक्त क्वेरी के नीचे पर विचार करें (एक सही भाषा के लिए छोड़ दिया):सही एसक्यूएल सर्वर में छोड़ दिया स्ट्रिंग के लिए

:

SELECT 'نرم افزار SQL سرور' 

आवश्यक परिणाम इस स्ट्रिंग है

سرور एसक्यूएल نرم افزار

क्या स्ट्रिंग को आरटीआर से आरटीएल में परिवर्तित करने के लिए कोई फ़ंक्शन या कोई अन्य तरीका है ??

उत्तर

4

स्ट्रिंग अक्षर से पहले N जोड़ने की आवश्यकता है: SELECT N'نرم افزار SQL سرور'। निहित यूनिकोड वर्णों की सही व्याख्या करने के लिए इसकी आवश्यकता है। (Source)

महत्वपूर्ण: कुछ मामलों में, कृपया एसएसएमएस कमांड विंडो में चयन करने के लिए मानक कॉपी-पेस्ट का उपयोग करने से बचें। यह affect the RTL/LTR order हो सकता है। इसके बजाय, फ़ाइल> खोलकर सही ढंग से बनाई गई फ़ाइल को खोलने का प्रयास करें।

और अपनी टिप्पणी के बारे में:

परिणाम होना चाहिए: سرور एसक्यूएल نرم افزار`

मैं मानता हूं मैं केवल आंशिक रूप से समझ में RTL लेखन प्रणाली है, लेकिन मैं क्या देख सकते हैं से, फ़ारसी शब्द आउटपुट को ठीक उसी क्रम में डाल दिया गया है जब आपने उन्हें दर्ज किया है (भले ही बाएं दाएं पढ़ने के बावजूद)। क्या आप मुझे Unicode Bidirectional Algorithm या इसी तरह के मानक दस्तावेज के आधार पर दिखा सकते हैं क्यों SQL सर्वर द्वारा शब्द ऑर्डर बदला जाना चाहिए? आपको किसी अन्य स्थान पर प्रीप्रोकैसिंग द्वारा किए जाने की अपेक्षा नहीं बदला जाना चाहिए, अपेक्षित स्ट्रिंग फॉर्म SELECT N'سرور SQL نرم افزار' भेजना? मुझे कोई बात नहीं है कि क्यों SQL SELECT परिवर्तन करना चाहिए। यदि ऐसा हुआ, तो क्या होगा यदि आप SELECT के परिणाम को SELECT में फ़ीड करते हैं तो क्या होगा? एक और परिवर्तन? मेरे पास यह सोचने के कारण हैं कि SQL सर्वर आपके इनपुट को तकनीकी रूप से सही तरीके से व्याख्या कर रहा है।

संकेत: शायद आप अपने आरटीएल पाठ को अलग-अलग Directional formatting characters से घूमने का प्रयास कर सकते हैं।

कृपया SQL Fiddle पर MySQL सर्वर के साथ SELECT को आजमाएं। विभिन्न सर्वर और प्रौद्योगिकी, लेकिन माइक्रोसॉफ्ट एसक्यूएल सर्वर के रूप में एक ही परिणाम दिया। एमएस SQL ​​सर्वर के साथ SSMS से

परिणाम: enter image description here

निष्कर्ष: आदेश अपेक्षित परिणाम प्राप्त करने के लिए, उसके अनुसार इनपुट के रूप में करें।

संबंधित:Transformation of word order you expected can be done by appropriate settings in user interface.

+0

@Behnam - जवाब अपडेट किया गया। परिणाम के साथ छवि देखें। मैं देख सकता हूं कि दोनों मामलों में (ए, बी) आउटपुट हमेशा इनपुट के अनुरूप होता है। और यह सही है। क्या आप अलग-अलग परिणाम प्राप्त कर रहे हैं? यदि हां, तो कृपया acccordingly सवाल अद्यतन करें। – miroxlav

+0

हम अब एक कदम आगे हैं। यह परिणाम सही है। लेकिन मुझे स्टेटमेंट ए के लिए परिणाम बी और परिणाम बी के लिए परिणाम बी – Behnam

+0

@ बेहनाम - मैं समझता हूं, लेकिन आप उम्मीद नहीं कर सकते हैं * स्टेटमेंट ए * के लिए परिणाम बी * और * स्टेटमेंट बी * के लिए परिणाम ए। यह SQL सर्वर काम की तरह नहीं है।इनपुट के लिए अनुरूप आउटपुट दिया जाता है, कोई परिवर्तन नहीं। जैसा कि आप देख सकते हैं, यह न केवल माइक्रोसॉफ्ट एसक्यूएल सर्वर के लिए, बल्कि अन्य एसक्यूएल सर्वरों के लिए भी सही है - MySQL सर्वर के साथ परीक्षण करने के उत्तर में "SQL Fiddle" लिंक पर क्लिक करने का प्रयास करें। – miroxlav

संबंधित मुद्दे