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

SQL सर्वर चुपचाप संग्रहीत कार्यविधियों में varchar की काट-छाँट करता है

यह बस है

मैंने कभी भी कोई समस्या नहीं देखी है, क्योंकि मेरी जांच में से एक यह सुनिश्चित करना होगा कि मेरे पैरामीटर मेरे टेबल कॉलम की लंबाई से मेल खाते हैं। क्लाइंट कोड में भी। व्यक्तिगत रूप से, मुझे उम्मीद है कि SQL कभी भी बहुत लंबा डेटा नहीं देखेगा। अगर मुझे कटा हुआ डेटा दिखाई देता है, तो यह स्पष्ट रूप से खून बह रहा होगा कि इसका क्या कारण है।

यदि आपको वर्चर (अधिकतम) की आवश्यकता महसूस होती है तो डेटाटाइप प्राथमिकता के कारण बड़े पैमाने पर प्रदर्शन समस्या से सावधान रहें। वर्चर (अधिकतम) की वर्चर (एन) की तुलना में उच्च प्राथमिकता है (सबसे लंबा उच्चतम है)। तो इस प्रकार की क्वेरी में आपको एक स्कैन मिलेगा न कि एक खोज और प्रत्येक varchar(100) मान CAST से varchar(max)

है
UPDATE ...WHERE varchar100column = @varcharmaxvalue

संपादित करें:

इस मुद्दे के संबंध में एक खुला Microsoft Connect आइटम है।

और शायद यह Erland Sommarkog की स्ट्रिक्ट सेटिंग (और मैचिंग कनेक्ट आइटम) में शामिल किए जाने के योग्य है।

मार्टिंस की टिप्पणी के बाद 2 संपादित करें:

DECLARE @sql VARCHAR(MAX), @nsql nVARCHAR(MAX);
SELECT @sql = 'B', @nsql = 'B'; 
SELECT 
   LEN(@sql), 
   LEN(@nsql), 
   DATALENGTH(@sql), 
   DATALENGTH(@nsql)
;

DECLARE @t table(c varchar(8000));
INSERT INTO @t values (replicate('A', 7500));

SELECT LEN(c) from @t;
SELECT 
   LEN(@sql + c), 
   LEN(@nsql + c), 
   DATALENGTH(@sql + c), 
   DATALENGTH(@nsql + c) 
FROM @t;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. .NET से एसएसआईएस पैकेज कैसे निष्पादित करें?

  2. SQL सर्वर आंतरिक:योजना कैशिंग पीटी। मैं - पुन:उपयोग योजना

  3. SQL सर्वर 2008 में डेटाबेस से अपने डेटा के साथ एक तालिका का बैकअप लें

  4. SQL सर्वर (T-SQL) में वर्तमान सत्र की भाषा प्राप्त करने के 3 तरीके

  5. SQL सर्वर डेटाबेस में पहचान कॉलम के साथ सभी तालिकाओं को कैसे खोजें - SQL सर्वर / टी-एसक्यूएल ट्यूटोरियल भाग 45