क्या आपने SET TEXTSIZE
. का उपयोग किया है किसी क्वेरी द्वारा लौटाए गए डेटा को सीमित करने के लिए, लेकिन पाया कि यह काम नहीं कर रहा है? आप पा रहे हैं कि आपका SELECT
TEXTSIZE
. पर ध्यान दिए बिना, क्वेरीज़ टेक्स्ट की पूरी मात्रा लौटाती रहती हैं मूल्य?
पढ़ते रहिये। आप यह एक स्पष्ट गलती कर रहे होंगे।
जब मैंने पहली बार TEXTSIZE
. का सामना किया था विकल्प, मैंने एक त्वरित परीक्षण चलाने का निर्णय लिया। लेकिन यह काम नहीं किया। मैंने कई बार विभिन्न TEXTSIZE
. के साथ प्रयास किया मूल्यों, लेकिन कुछ भी काम नहीं लग रहा था।
"यह काम क्यों नहीं कर रहा है?" मैंने सोचा।
लेकिन फिर यह क्लिक किया। मैंने प्रलेखन को फिर से पढ़ा और महसूस किया कि मैं अपने डेटा प्रकारों के लिए सही स्ट्रिंग आकार का उपयोग नहीं कर रहा था।
TEXTSIZE
केवल निम्न डेटा प्रकारों पर काम करता है:
- वर्कर(अधिकतम)
- nvarchar(अधिकतम)
- varbinary(अधिकतम)
- पाठ
- ntext
- छवि
यदि आप पहले तीन को देखें, तो ध्यान दें कि वे max
का उपयोग करते हैं तर्क के लिए। इसका मतलब है कि वे अधिकतम स्ट्रिंग/भंडारण आकार का उपयोग करते हैं।
मैं nvarchar(100) . प्रकार के स्तंभों के विरुद्ध इसका परीक्षण कर रहा था , वर्कर(255) , आदि। कोई आश्चर्य नहीं कि यह काम नहीं कर रहा था।
उदाहरण
मेरा क्या मतलब है, यह दिखाने के लिए यहां एक उदाहरण दिया गया है।
USE Test; DROP TABLE IF EXISTS TextSizeTest; CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTest VALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' ); SET TEXTSIZE 4; SELECT * FROM TextSizeTest;
परिणाम:
+-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Drag | Dr | +-------------+--------------+---------------+
यहाँ, मैंने TEXTSIZE
. सेट किया है 4
. का मान , लेकिन varchar(50)
. का पूरा टेक्स्ट स्तंभ बरकरार है। यह कॉलम SET TEXTSIZE
. से अप्रभावित है . और ठीक इसी तरह इसे काम करना चाहिए।
केवल अन्य दो कॉलम प्रभावित होते हैं, क्योंकि वे varchar(max)
. हैं और nvarchar(max)
क्रमशः।
साथ ही, कारण nvarchar कॉलम varchar . से छोटा है ऐसा इसलिए है क्योंकि यह प्रत्येक वर्ण के लिए दो बाइट्स का उपयोग करता है (varchar . की तुलना में) प्रति वर्ण एक बाइट है)।
इसलिए यदि आपको SET TEXTSIZE
. में समस्या आ रही है , अपना डेटा प्रकार जांचें।