Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

टेक्स्ट सेट करें SQL सर्वर में काम नहीं कर रहा है? इसे देखो।

क्या आपने 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 . में समस्या आ रही है , अपना डेटा प्रकार जांचें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. या SQL सर्वर में ऑपरेटर शॉर्ट-सर्किट

  2. SQL सर्वर रिपोर्टिंग सेवाओं में Salesforce.com डेटा के साथ कार्य करना

  3. 'केवल पढ़ने के लिए' डेटाबेस को छोटा नहीं कर सकता | ऑलवेजऑन अवेलेबिलिटी ग्रुप का उपयोग करते हुए ट्रांजेक्शन लॉग को सिकोड़ें

  4. एक कॉलम पर DISTINCT चुनें

  5. SQL क्वेरी ऑप्टिमाइज़ेशन - यह कैसे निर्धारित करें कि इसकी आवश्यकता कब और क्या है