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

SQL सर्वर में प्रत्येक पंक्ति के लिए लौटाए गए डेटा को सीमित करने के लिए SET TEXTSIZE का उपयोग करें

SQL सर्वर में, SET TEXTSIZE स्टेटमेंट varchar(max) . के आकार को निर्दिष्ट करता है , nvarchar(अधिकतम) , varbinary(अधिकतम) , पाठ , ntext , और छवि SELECT . द्वारा लौटाया गया डेटा बयान।

Microsoft सलाह देता है कि पाठ , ntext , और छवि SQL सर्वर के भविष्य के संस्करण में हटा दिया जाएगा, इसलिए आपको नए विकास कार्यों में इन डेटा प्रकारों का उपयोग करने से बचना चाहिए, और उन अनुप्रयोगों को संशोधित करने की योजना बनानी चाहिए जो वर्तमान में varchar(max) का उपयोग करने के लिए उनका उपयोग करते हैं। , nvarchar(अधिकतम) , या varbinary(max) इसके बजाय।

उदाहरण 1 - मूल उपयोग

यहां TEXTSIZE . सेट करने का एक उदाहरण दिया गया है मूल्य।

SET TEXTSIZE 2048;

यह TEXTSIZE . सेट करता है 2048 बाइट्स तक।

उदाहरण 2 - TEXTSIZE मान की जाँच करें

आप वर्तमान TEXTSIZE . की जांच कर सकते हैं @@TEXTSIZE . के साथ मान :

SELECT @@TEXTSIZE AS [Text Size];

परिणाम:

+-------------+
| Text Size   |
|-------------|
| 2048        |
+-------------+

उदाहरण 3 - यह क्वेरी परिणामों को कैसे प्रभावित करता है

यहां एक उदाहरण दिया गया है जो दर्शाता है कि कैसे TEXTSIZE value SELECT . में दिए गए परिणामों को प्रभावित कर सकता है क्वेरी।

आइए पहले एक टेबल बनाएं, कुछ टेक्स्ट डालें, फिर उसे चुनें।

USE Test;
CREATE TABLE TextSizeTest (
    varchar50 varchar(50),
    varcharMax varchar(max),
    nvarcharMax nvarchar(max)
    ); 
INSERT INTO TextSizeTest
VALUES (
    'Dragonfruit',
    'Dragonfruit',
    'Dragonfruit'
    );

SELECT * FROM TextSizeTest;

परिणाम (सामान्य):

+-------------+--------------+---------------+
| varchar50   | varcharMax   | nvarcharMax   |
|-------------+--------------+---------------|
| Dragonfruit | Dragonfruit  | Dragonfruit   |
+-------------+--------------+---------------+

हम सामान्य रूप से यही अपेक्षा करते हैं। यह प्रत्येक कॉलम के अंदर पूरा टेक्स्ट लौटाता है क्योंकि टेक्स्ट की प्रत्येक पंक्ति में 2048 बाइट्स से कम समय लगता है (जो कि मैंने TEXTSIZE सेट किया है। पिछले उदाहरण में)।

लेकिन अगर मैं TEXTSIZE . को कम कर दूं तो क्या होगा मूल्य:

SET TEXTSIZE 4;
SELECT * FROM TextSizeTest;

परिणाम:

+-------------+--------------+---------------+
| varchar50   | varcharMax   | nvarcharMax   |
|-------------+--------------+---------------|
| Dragonfruit | Drag         | Dr            |
+-------------+--------------+---------------+

पहला कॉलम अप्रभावित है, क्योंकि यह "अधिकतम" कॉलम नहीं है। मेरा मतलब है, यह एक varchar(50) . है और नहीं varchar(max) . TEXTSIZE विकल्प केवल उन स्तंभों को प्रभावित करता है जो max . से परिभाषित हैं ।

दूसरा कॉलम पहले चार अक्षर देता है। ऐसा इसलिए है क्योंकि हमने TEXTSIZE . सेट किया है मान 4 है, और पहले चार वर्ण 4 बाइट्स का उपयोग कर रहे हैं।

तीसरा कॉलम केवल पहले 2 अक्षर लौटाता है। ऐसा इसलिए है क्योंकि यह एक nvarchar . है कॉलम। इस मामले में, पहले दो अक्षर 4 बाइट्स का उपयोग कर रहे हैं।

उदाहरण 4 - मान रीसेट करें

एक बात का ध्यान रखना चाहिए कि SET TEXTSIZE 0 . निर्दिष्ट करना वास्तव में इसे 4096 के डिफ़ॉल्ट मान पर "रीसेट" करता है।

SET TEXTSIZE 0;
SELECT @@TEXTSIZE AS [@@TEXTSIZE];
SELECT * FROM TextSizeTest;

परिणाम:

+--------------+
| @@TEXTSIZE   |
|--------------|
| 4096         |
+--------------+
(1 row affected)
+-------------+--------------+---------------+
| varchar50   | varcharMax   | nvarcharMax   |
|-------------+--------------+---------------|
| Dragonfruit | Dragonfruit  | Dragonfruit   |
+-------------+--------------+---------------+
(1 row affected)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. यदि एक ही कथन में दो बार उपयोग किया जाता है तो क्या GETUTCDATE() वही मान लौटाएगा?

  2. SQL सर्वर (T-SQL) में अनुलग्नक के रूप में क्वेरी परिणाम ईमेल कैसे करें

  3. एसक्यूएल सर्वर ट्रिगर नई पंक्ति से दूसरी तालिका में मूल्यों को सम्मिलित करता है

  4. चेतावनी प्राप्त करना:कुल या अन्य सेट ऑपरेशन द्वारा शून्य मान समाप्त हो गया है

  5. SQL सर्वर में अस्थायी तालिकाओं का परिचय